我正在使用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
}
}