Modal View控制器因内存警告而被解雇?

时间:2012-02-02 22:46:26

标签: iphone ios memory-management didreceivememorywarning

我的应用程序中发生了间歇性错误,我终于可以通过在某种情况下模拟内存警告来始终如一地重现它。这是设置。

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

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

如果用户然后按下MC2中的“完成”按钮,它将调用MC1中的委托方法,该方法崩溃,因为内存警告导致MC1被卸载并解除了锁定。

我的应用程序中还有其他地方,我的导航控制器显示模态视图控制器链,但触发内存警告只会导致我的应用程序的某个特定区域出现此问题。

有什么可能导致这种行为吗?我没有特定的代码示例,因为我不确定导致问题的代码是什么。我会感激任何指点。

1 个答案:

答案 0 :(得分:1)

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

  • 在viewDidUnload中或在显示MC2之前,请记住当前状态。
  • 在viewDidLoad中,恢复旧状态(如果有)。
  • 在委托方法中,如果视图已被释放,请调用[自我视图]加载视图。

或者,您可能需要考虑以下黑客攻击。 UIViewController prevent view from unloading