2013-03-13 84 views
1

我不知道有關didReceiveMemoryWarning的太多信息,但考慮到我在其他文章中閱讀的內容以及在文檔中查找的內容,我發現在iOS 5的情況下,任何不可見視圖控制器將轉儲其視圖,但在iOS 6的情況下文檔(documentation說,默認實現「退出」,我不知道我應該怎麼理解。工作原理didReceiveMemoryWarning iOS 6

我一直在做一些測試iOS模擬器模擬低內存警告,我欣賞(在iOS 5上)如果我在堆棧中的第二個視圖中並且模擬低內存警告,則當前視圖沒有任何反應,但是如果我返回到之前的視圖被釋放,並且viewDidLoad被再次調用,但是在cas中e iOS 6以前的觀點沒有發佈,我的意思是這個,這是我的問題:如果視圖沒有發佈,那麼didReceiveMemoryWarning在iOS 6上的後果是什麼?我是否應該爲其他任何事情擔心,米不考慮?即使視圖沒有被釋放,像類變量(例如NSMutableArray)可以被釋放嗎?

+0

我認爲在這種情況下「退出」意味着函數「返回」給調用者,但這並不意味着他們調用[exit()](http://www.cplusplus.com/reference/cstdlib /出口/)。 – progrmr 2013-03-13 18:28:31

回答

1

您只有更多的控制views are no longer purged under low-memory conditions and so this method [viewDidUnload] is never calledDeprecated UIViewController Methods)。

如果視圖的構建成本昂貴,但不像內存渴望,您可能不會釋放它。據我所知,iOs在發生內存警告時不會釋放任何東西,因此決定完全取決於您,請使用didReceiveMemoryWarning或其他通知技術(請參閱部分Observe Low-Memory Warnings)。

WWDC 2012會議236:iOS上的視圖控制器的演變可能對您很有意思。

+0

這個答案開始非常好,但接下來呢。 – 1dayitwillmake 2013-07-06 03:37:34

+0

@ 1dayitwillmake答案有什麼問題? – 2013-07-11 13:17:05

+0

......第一條評論也是如此。 – 2013-11-25 06:27:46