Vazamentos de memória do SpriteKit mudando cenas contendo SKTileMapNodes
Estou tentando criar um jogo de plataforma 2D simples usando Swift, SpriteKit e SKTileMaps. Mas sempre que mudo entre cenas que contêm o SKTileMaps, vejo muitos vazamentos de memória no Xcode Instruments.
Recriei o problema da maneira mais simples possível. Estou usando um arquivo .sks para criar a cena e esse arquivo contém apenas 1 tileMap preenchido com alguns tiles.
O código no controlador de exibição para apresentar a cena:
if let view = self.view as! SKView? {
let scene = LoadingScene(size: CGSize(width: 2048, height: 1536))
scene.scaleMode = .aspectFill
view.presentScene(scene)
O código para a cena:
import SpriteKit
import GameplayKit
class GameScene: SKScene {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let scene = GameScene(fileNamed: "WorldScene") else{fatalError("Could not open world scene")}
view?.presentScene(scene)
}
}
Estou escolhendo GameScene como a classe personalizada no arquivo de cena .sks.
Isso resultará em muitos pequenos vazamentos de memória toda vez que eu mudar de cenário:
imagem de vazamento de memória em instrumentos
Este é o vazamento de apenas uma mudança de cena. Estou fazendo algo errado ou isso é um bug do SpriteKit?
Edit1
Os vazamentos SKCTileMapNode :: _ assegurarChunkForTileIndex (int não assinado) acontecem cada vez que carrego o mapa de blocos, enquanto o restante aparece apenas ao alterar uma cena
Edit2
O GameViewController foi alterado para pular o LoadingScene e ir direto para o GameScene. O vazamento de memória ainda está lá:
if let view = self.view as! SKView? {
guard let scene = GameScene(fileNamed: "WorldScene") else{fatalError("Could not open world scene")}
scene.scaleMode = .aspectFill
view.presentScene(scene)
}