當我的iPhone應用程序收到內存警告時,當前不可見的UIViewControllers視圖將被卸載。在一個特定的控制器卸載視圖和出口是相當致命的。UIViewController阻止卸載視圖
我正在尋找一種方法來防止此視圖被卸載。我發現這種行爲非常愚蠢 - 我有一個緩存機制,所以當內存警告來臨時 - 我卸載了大量數據,並釋放了足夠的內存,但我絕對需要這個視圖。
我看到UIViewController有一個方法unloadViewIfReloadable
,它會在內存警告來臨時調用。有人知道如何告訴Cocoa Touch我的視圖不可重新加載嗎?
任何其他建議如何防止我的視圖被卸載內存警告?
在此先感謝
約視圖控制器的視圖生命週期
蘋果的文檔說:
didReceiveMemoryWarning - 默認 實現釋放的觀點僅 如果確定它是安全可靠 so
現在...我用一個空函數覆蓋didReceiveMemoryWarning
,它只是調用NSLog讓我知道收到了一個警告。但是 - 視圖無論如何都會被卸載。另外,根據什麼標準來決定視圖是否可以安全地卸載......哦!這麼多的問題!
也許你應該重構你的設計,以便不能被釋放的部分是單獨的持久對象的一部分,而不是視圖本身的一部分。 – 2010-06-03 11:44:23
嗨大衛,在屏幕上顯示的整個視圖層次結構,我不想撕掉它,然後再次構建它,而我在頂部顯示模態視圖控制器...是不是過度殺傷? – 2010-06-03 11:56:20
我喜歡@umpo提供的解決方案,但是,這些代碼會導致運行時警告,像'MyViewController實現-viewDidUnload導致視圖重新加載。 這會對系統性能產生不利影響。「 - 你是忽略它還是你做了些什麼? – matm 2011-06-28 13:29:26