【发布时间】:2016-02-14 05:24:02
【问题描述】:
我在 GameViewController 中有一个 SKScene 对象设置。我在 SKScene 子类中实现了dealloc,如下所示:
- (void)dealloc {
NSLog(@"Dealloc: %@", self);
}
现在我想在 GameViewController 之上展示另一个视图控制器。我使用故事板segue来做到这一点。但是在新的视图控制器出现后,我再也没有收到 SKScene dealloc。它卡在了记忆里。由于内存不足,我的应用程序在几分钟后开始冻结。呈现新的视图控制器后如何解除场景的分配。
【问题讨论】:
-
@user3351949 我这样做了:
SKView *skView = (SKView *)self.view; [skView presentScene:nil];不起作用。 -
@user3351949 现在我这样做了:
SKView *skView = (SKView *)self.view; GameScene *scene = (GameScene *)skView.scene; [skView presentScene:nil]; scene = nil;仍然不起作用 -
您在另一个 ViewController 之上展示了一个 ViewController....当您展示下一个 VC 时,前一个 VC 不会被解除分配......您有一个导航堆栈在这里重新创建它引用了堆栈中的所有内容。如果在从堆栈中删除前一个 VC 时呈现您呈现的内容......那么您就是 VC,只要没有其他内容包含对它们的强引用,它的各自视图(SKView)就会被释放。
标签: ios objective-c sprite-kit dealloc skscene