【问题标题】:SpriteKit - CPU/Memory leak on segue back to main screenSpriteKit - segue 回到主屏幕时的 CPU/内存泄漏
【发布时间】:2014-05-27 20:11:08
【问题描述】:

我有一个应用程序,其中有一个 SpriteKit 游戏和一个主菜单。单击主页按钮后,CPU/内存不会减少。我已经尝试了一些东西,这里的代码可能是多余的,但它还没有为我工作。

每当触摸主页按钮时执行:

- (void)goToMainMenu {
    [self performSegueWithIdentifier:@"mainmenu" sender:self];
    [self.spriteView removeFromSuperview];
    self.scene = nil;
    [self.spriteView presentScene:nil];
    self.spriteView = nil;
    self.view = nil;
}

从主菜单返回游戏时,CPU/内存只会上升。

【问题讨论】:

    标签: ios objective-c cocoa memory-leaks sprite-kit


    【解决方案1】:

    您不想从主屏幕切换到应用程序,然后再次切换到主屏幕。您将有两个主屏幕实例。如果你继续玩游戏,你也会有两个例子。并且每次您使用循环系列的 segue 时,您最终都会得到更多重复的实例。

    您应该使用“unwind”segue(参见 this answer,例如 unwind segue)或使用 popViewControllerAnimateddismissViewControllerAnimated,具体取决于您是推送还是呈现给游戏视图控制器。这就是您返回到主屏幕的原始实例的方式,而不是创建一个新实例。

    【讨论】:

    • 谢谢,但这并不能解决 CPU/内存泄漏问题。
    • @user3477144 如果你从mainmenu推送/呈现到你的游戏场景,然后从游戏场景推送/呈现回mainmenu,你肯定会泄漏(技术上,“放弃“ 记忆)。但是,如果您修复了该问题并且仍在泄漏,那么您可能会遇到其他问题(强参考周期等)。请参阅WWDC 2013 video“修复内存问题”,或者更好的是WWDC 2012 video“iOS 应用性能:内存”。
    猜你喜欢
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 2021-08-04
    • 1970-01-01
    相关资源
    最近更新 更多