Я создал простую игру с SpriteKit, но каждый раз, когда я запускаю игру, использование памяти в симуляторе увеличивается примерно на 30 мб, но никогда не уменьшается, когда игра заканчивается.
Когда я запускаю игру более чем в десять раз, симулятор становится все медленнее и медленнее и в конечном итоге падает.
В этой простой игре у меня есть два контроллера и gamescene:
MainController вызывает GameViewController с помощью кнопки
В GameViewController инициализируется gamecene следующим образом:
class GameViewController: UIViewController
{
var skView:SKView!
var scene:GameScene!
override func viewDidLoad() {
super.viewDidLoad()
scene = GameScene(size: view.bounds.size)
skView = view as SKView
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
scene.viewController = self
skView.presentScene(scene)
}
//with a prepareForSegue deinitialises the scene and skview:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "GameFinished"{
scene.removeAllActions()
scene.removeAllChildren()
scene.removeFromParent()
scene = nil
skView.presentScene(nil)
skView = nil
let target = segue.destinationViewController as MainController
}
}
}
В GameScene viewController является свойством
var viewController:GameViewController? = GameViewController()
срабатывание segue происходит следующим образом:
self.viewController!.performSegueWithIdentifier("GameFinished", sender: nil)
Я также попытался применить методы удаления в Deanit в GameScene:
deinit{
self.removeAllActions()
self.removeAllChildren()
}
По-прежнему не работает