【发布时间】:2014-07-05 21:33:51
【问题描述】:
我正在设计一个有 6 个视图控制器的游戏。
我使用 modal segues 向前导航并展开 segues 向后导航。
通过视图控制器的游戏流程是 A -> B -> C -> D -> E -> F。
当我尝试从 F 放松到 A 时,dealloc 只在 B 和 C 上调用。这意味着每次玩游戏时,使用的内存都在不断增加。
我最初认为问题是由于某些东西被保留导致无法在视图控制器 D 和 E 上调用 dealloc。但是,如果我将 unwind segue 设置为从 F 到 D,那么 F 和 E 都会调用 dealloc似乎可以排除这个问题。
我还有一条直接从视图控制器 A 到 F 的路由。在这种情况下,当我展开时,会在 F 上正确调用 dealloc。
视图控制器 F 和 C 在 A 上调用相同的展开操作。我认为这不是原因,因为我尝试将其更改为对每个视图控制器使用唯一的展开操作。
对造成这种情况的原因有什么想法吗?我复制了下面使用的一些代码。请让我知道哪些其他代码(如果有)将有助于解决此问题。任何帮助将不胜感激。
如下展开动作:
- (IBAction)unwindToMainMenu:(UIStoryboardSegue *)unwindSegue
{}
调用以触发从视图控制器 F 到 A 的展开 segue:
[self performSegueWithIdentifier:@"ReturnToMainMenu" sender:self];
【问题讨论】:
-
您是否尝试过使用“Leaks”工具,它可以指出保留周期并为您提供任何对象的所有保留/释放的历史记录?
-
我试过泄漏仪器,但我不太熟悉。它向我指出 PrepareForSegue 是问题所在,但我不确定如何解释它。我对 iOS 开发还很陌生 :)
-
好吧,我们无法为您提供的信息提供帮助,所以我建议您观看一些有关如何使用仪器的 WWDC 视频,或者创建一个显示问题的最小示例项目你看到了,所以我们可以提供帮助。
-
什么信息会有帮助?我可以提供更多代码,只是不想把我所有的代码都扔到页面上:)
-
你应该尝试创建一个最小的例子:stackoverflow.com/help/mcve
标签: ios xcode segue uistoryboardsegue dealloc