2012-02-02 42 views
0

我有一个间歇性的错误发生在我的应用程序中,并且我终于能够通过模拟特定场景中的内存警告来始终如一地重现它。这是设置。Modal View控制器在内存警告中被解散?

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

如果我模拟存储器警告而模态控制器2是在屏幕上,模态控制器1被驳回,底部导航控制器弹出所有的方式回到其根。这正是所报告的错误中发生的情况。

如果用户然后按压在MC2完成按钮时,它调用在MC1委托方法,其崩溃,因为存储器警告引起MC1被卸载和dealloc'd。

有我的应用程序的其他地方,我有导航控制器呈现模式视图控制器的链条,又引发了内存不足的警告只会在我的应用程序的一个特定区域会导致此问题。

是否有任何可能导致这种行为?我没有特定的代码示例,因为我不确定哪些代码导致了问题。我会很感激任何指针。

回答

1

当内存警告发生,可能的iOS释放任何看不见的意见,包括MC1的观点(而不是MC1本身)你的情况。您需要在MC1中实现以下内容。

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

或者,你可能要考虑下面的技巧。 UIViewController prevent view from unloading