#ios #swift #xcode #memory-leaks #sprite-kit
#iOS #swift #xcode #утечки памяти #sprite-kit
Вопрос:
Когда я запускаю профилирование утечек в своей игре для ios, в ней обнаруживается большое количество утечек памяти с информацией, как показано ниже:
Моя игра для IOS построена на платформе Spritekit на языке Swift. Я новичок в профилировании проекта IOS, кто-нибудь может дать мне представление о том, в чем может быть проблема и как ее определить? Большое спасибо.
ps. Я добавил код, как показано ниже, для проверки того, есть ли какой-либо SKNode, который был сгенерирован и никогда removeFromParent
не мог вызвать утечку памяти, но в результате количество дочерних элементов в сцене колеблется только между фиксированным числом, поэтому проблема заключается не в этом.
var count = 0
scene.enumerateChildNodesWithName("*") {
node, stop in
count = 1
if (node is SKSpriteNode) {
let sprite = node as! SKSpriteNode
forEachSprite(sprite: sprite)
}
}
print("memory_leak_detect_1=[(count)]")
# Output
memory_leak_detect_1=[8]
memory_leak_detect_1=[8]
memory_leak_detect_1=[13]
memory_leak_detect_1=[4]
memory_leak_detect_1=[13]
memory_leak_detect_1=[4]
memory_leak_detect_1=[8]
memory_leak_detect_1=[7]
memory_leak_detect_1=[8]
memory_leak_detect_1=[9]
memory_leak_detect_1=[8]
memory_leak_detect_1=[13]
memory_leak_detect_1=[4]
memory_leak_detect_1=[7]
Комментарии:
1. Вы выделяете объект и каким-то образом не освобождаете его, где исходный код?
2. Похоже, что вызывает утечку памяти, но во всей информации о трассировке на рисунке нет пути, который мог бы привести к моему коду. Похоже, все связано с фреймворком Spritekit. Вы знаете, где я мог бы ее найти? @MoDJ
3. В инструменте распределения (строка выше утечек), можете ли вы показать нам постоянный # от самого высокого до самого низкого. Это хороший способ определить тип утечки.