SpriteKit Память увеличивается каждый раз, когда новая сцена представлена - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь решить проблему, из-за которой SpriteKit вызывает утечку памяти каждый раз, когда я заново открываю сцену после ее закрытия и отображения контроллера.Это тенденция к повышению при каждом открытии: spritekit memory leak

Когда я проверяю инструменты, проблема, кажется, связана с SKTileMapNode "SKCTileMapNode :: _ sureChunkForTileIndex (unsigned int)", но яЯ использую этот код при willMove (из представления: SKView):

 for child in children {
        if child.isKind(of: SKTileMapNode.self) {
            (child as! SKTileMapNode).fill(with: nil)
            print("Wiped tiles for tilemaps")
            child.removeAllActions()
            child.removeFromParent()
        } else if child.isKind(of: SKSpriteNode.self) {
            (child as! SKSpriteNode).texture = nil
            child.removeAllActions()
            child.removeFromParent()
            print("Wiped SKSpriteKitNodes")
        } else {
            print("Other child removed")
            child.removeAllActions()
            child.removeFromParent()
        }

    }

И, как вы можете видеть на изображении выше, результат по-прежнему превышает использование памяти.Все еще с SKTileMapNode в инструментах?

1 Ответ

0 голосов
/ 06 декабря 2018

Я попытался проверить, не было ли что-то освобождено, и это не решило проблему.Я использовал билет технической поддержки разработчика, и инженер посоветовал мне отключить «GPU Frame Capture» в схеме проекта.

Эти 95% решили проблему.Использование памяти уменьшилось до более разумного уровня, и приложение больше не продолжает наращивать использование памяти после того, как я применил разумные методы для освобождения сцен, узлов и т. Д. ...

Я спросил, было ли это решение только для тестированияв XCode и мне сказали, что это не так, вот как мое приложение будет работать в App Store:

"GPU Frame Capture - это инструмент для отладки, который присутствует только при запуске приложения с подключенным отладчиком XCode!»- сказал инженер.

...