我的应用程序中发生了一个间歇性错误,我终于能够通过模拟特定场景中的内存警告来一致地重现它。这是设置。
Nav controller
(as tab inside --> Modal Controller 1 --> Modal Controller 2
Tab Controller)
如果我在屏幕上显示模态 Controller 2 时模拟内存警告,则模态 Controller 1 将被关闭,并且底部导航 Controller 会一直弹出到其根目录。这正是所报告的错误中发生的情况。
如果用户随后按下 MC2 中的“完成”按钮,则会调用 MC1 中的委托(delegate)方法,该方法会崩溃,因为内存警告导致 MC1 被卸载并释放。
在我的应用程序中的其他地方,我有导航 Controller 呈现模态视图 Controller 链,但触发内存警告只会在我的应用程序的一个特定区域中导致此问题。
有什么可能导致此行为吗?我没有具体的代码示例,因为我不确定是什么代码导致了问题。如果有任何指点,我将不胜感激。
最佳答案
当发生内存警告时,iOS 可能会释放任何不可见的 View ,包括您的情况下的 MC1 View (但不是 MC1 本身)。您需要在 MC1 中实现以下内容。
- 在 viewDidUnload 中或显示 MC2 之前,记住当前状态。
- 在 viewDidLoad 中,恢复旧状态(如果有)。
- 在委托(delegate)方法中,调用[self view]来加载已释放的 View 。
或者,您可能需要考虑以下技巧。 UIViewController prevent view from unloading
关于iphone - 模态视图 Controller 因内存警告而被解雇?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9121154/