2012-02-02 40 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