2014-04-14 13 views
2

我有一个应用程序,其中有一个SpriteKit游戏以及一个主菜单。点击主页按钮后,CPU /内存不会像应有的那样降低。我尝试了一些东西,这里的代码可能是多余的,但它还没有为我工作。SpriteKit - segue上的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 /内存只涨不跌。

回答

1

您不想从主屏幕再次回到应用程序并再次回到主屏幕。您将有两个主屏幕实例。如果你再次遇到游戏,那么你也会有两个例子。每当你跟随循环系列的赛段时,你最终会得到更多的重复实例。

您应该使用“开卷”赛格瑞(见this answer例如开卷赛格瑞的),或使用popViewControllerAnimateddismissViewControllerAnimated取决于你是否推或呈现给游戏视图控制器。这就是你如何返回到主屏幕的原始实例,而不是创建一个新的实例。

+0

谢谢,但这并不能解决CPU /内存泄漏问题。 – Tillson

+0

@ user3477144如果您从'mainmenu'推送/呈现给您的游戏场景,然后从游戏场景中推送/呈现回'mainmenu',您肯定会泄漏(技术上而言,“弃用”内存)。但是,如果你修正了这个问题并且仍在泄漏,那么你可能会遇到其他问题(强参考周期等)。请参阅[WWDC 2013视频](https://developer.apple.com/videos/wwdc/2013/)“修复内存问题”,或者甚至更好[WWDC 2012 video](https://developer.apple.com)/videos/wwdc/2012 /)“iOS应用程序性能:内存”。 – Rob