在SpriteKit(iOS)中更改视图时内存泄漏

时间:2018-02-28 22:40:20

标签: ios swift memory-leaks sprite-kit

我正在使用SpriteKit在iOS中创建游戏。基本设置是有一个带有几个视图控制器的故事板,其中一个是GameViewController。当我从GameScene切换到另一个视图(在完成hte级别之后)它调用GameScene deinit(),但内存不会丢失。因此,在启动每个级别屏幕后,内存使用量会逐渐增加。

我已经检查了保留周期但找不到任何保留周期,但我猜的并不多,因为我对此很陌生。此外,在传输视图后从GameScene调用deinit这一事实表明GameScene正在被解雇。

以下是我的代码摘要

class GameScene: SKScene, SKPhysicsContactDelegate {
    weak var gsDel: GameSceneDelegate?
    var player = Player()
    func checkEndLevel() {
        self.removeAllChildren()
        self.removeAllActions()
        gsDel!.player = player
        gsDel!.levelEnded()
   }
}

并在我的GameViewController中......

class GameViewController: UIViewController, GameSceneDelegate {
    weak var scene:GameScene? = GameScene()
    var player: Player?
    override func viewDidLoad() {
        ...
    }
    func levelEnded() {
        self.dismiss(animated: true, completion: {})
        let levelVC = self.storyboard?.instantiateViewController(withIdentifier: "LevelViewController") as! LevelViewController
        levelVC.player = player!
        self.view?.window?.rootViewController = levelVC
    }
}

0 个答案:

没有答案