我的应用程序中出现一个间歇性错误,最终我可以通过在特定情况下模拟内存警告来一致地重现它。这是设置。

 Nav controller
 (as tab inside      --> Modal Controller 1 --> Modal Controller 2
 Tab Controller)


如果在屏幕上显示Modal Controller 2时模拟内存警告,则Modal Controller 1将关闭,并且底部导航控制器会一直弹出回到其根目录。这正是所报告的错误中发生的情况。

如果用户然后按下MC2中的“完成”按钮,则会在MC1中调用一个委托方法,该方法会崩溃,因为内存警告导致MC1被卸载和取消分配。

在我的应用程序中还有其他地方,我的导航控制器提供了模态视图控制器链,但是触发内存警告只会在我的应用程序的一个特定区域中引起此问题。

有什么可能导致此行为的吗?我没有特定的代码示例,因为我不确定是什么代码导致了问题。我将不胜感激任何指针。

最佳答案

发生内存警告时,iOS可能会释放所有不可见的视图,包括MC1的视图(但不包括MC1本身)。您需要在MC1中实现以下功能。


在viewDidUnload中或在显示MC2之前,请记住当前状态。
在viewDidLoad中,还原旧状态(如果有)。
在委托方法中,调用[self view]以加载视图(如果已释放)。


或者,您可能需要考虑以下技巧。
UIViewController prevent view from unloading

关于iphone - Modal View Controller 在出现内存警告时被解雇了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9121154/

10-12 14:32