2011-10-02 48 views
0

我的應用程序中有幾個選項卡。目前我正面臨一個問題,即當內存不足時我的頁面會被卸載(特別是如果我在我的應用程序中顯示相機)。如何在應用程序處於活動狀態時阻止頁面卸載

有沒有辦法緩解這種情況並防止發生卸貨?或者是否有任何方法來攔截卸載過程,以便可以完成某些操作而不是允許卸載頁面?

回答

1

你不應該阻止視圖卸載,如果應用程序內存不足,它必須釋放內存,否則你的應用程序將簡單地被系統殺死。你應該儘可能地清理儘可能多的內存以及視圖。

此外,視圖僅用於顯示數據,如果視圖被卸載,它只是在一個特定的情況下:存在內存警告並且視圖沒有超級視圖(對用戶不可見)。如果它對用戶不可見,則在內存不足時保持它不變是毫無意義的。如果你是在這些視圖中存儲 [重要]數據,你做錯了。數據模型應保存在控制器中。

-1

當內存變低時,所有視圖控制器都會調用它們的委託方法:didReceiveMemoryWarning。

UIViewController的默認實現是卸載視圖。

所以,你需要以覆蓋此行爲做的是覆蓋的方法:

- (void)didReceiveMemoryWarning 
{ 
    //[super didReceiveMemoryWarning]; - calling this will unload the view 

    // Relinquish ownership any cached data, images, etc that aren't in use. 
} 
+0

很可能引發崩潰與停止該應用在這樣的警告釋放內存。 – tobiasbayer

+0

大多數應用程序都有很多viewControllers。你當然應該讓iOS在你的應用程序中卸載大部分viewController。但是在某些情況下(並不是很少見),你有幾個viewController你不想被卸載。對於那些viewControllers你可以使用這個方法。 – adamsiton

相關問題