Утечка памяти с ключевым словом «create_fence» при внедрении игры ios поверх spritekit в swift

#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. В инструменте распределения (строка выше утечек), можете ли вы показать нам постоянный # от самого высокого до самого низкого. Это хороший способ определить тип утечки.