在我的应用程序中,我有三个不同的SKScene子类用于我的菜单,游戏和屏幕上的游戏。当玩家在游戏中遇到障碍物时,我会使用以下场景在场景中展示新游戏:
EndGame *endGame = [[EndGame alloc] initWithSize:[UIScreen mainScreen].bounds.size];
SKView *spriteView = (SKView *)self.view;
[spriteView presentScene:endGame];
但是,我的gameScene仍然在后台运行(我可以通过在update方法中打印一条消息来判断)。当我在场景中展示游戏时,如何确保释放gameScene的实例?
目前,当我在场景之间移动时,我的内存使用量会逐渐增加。
答案 0 :(得分:0)
虽然你找到了答案的解决方案,但我有类似的东西。
我有一个navigationController,它显示了一个MainViewController,您可以从中转到GameViewController(使用SKScene)。在'游戏之后我会弹回MainViewController,但是,我的场景(在GameViewController中)仍然在后台运行。我通过在update()函数中打印TimeInterval来检查。
我最终做的是,在我的viewDidDisappear中,我做了一个
skView.presentScene(nil)
这删除了我的场景,并释放了它正在使用的任何内存。