我的應用程序中有幾個選項卡。目前我正面臨一個問題,即當內存不足時我的頁面會被卸載(特別是如果我在我的應用程序中顯示相機)。如何在應用程序處於活動狀態時阻止頁面卸載
有沒有辦法緩解這種情況並防止發生卸貨?或者是否有任何方法來攔截卸載過程,以便可以完成某些操作而不是允許卸載頁面?
我的應用程序中有幾個選項卡。目前我正面臨一個問題,即當內存不足時我的頁面會被卸載(特別是如果我在我的應用程序中顯示相機)。如何在應用程序處於活動狀態時阻止頁面卸載
有沒有辦法緩解這種情況並防止發生卸貨?或者是否有任何方法來攔截卸載過程,以便可以完成某些操作而不是允許卸載頁面?
你不應該阻止視圖卸載,如果應用程序內存不足,它必須釋放內存,否則你的應用程序將簡單地被系統殺死。你應該儘可能地清理儘可能多的內存以及視圖。
此外,視圖僅用於顯示數據,如果視圖被卸載,它只是在一個特定的情況下:存在內存警告並且視圖沒有超級視圖(對用戶不可見)。如果它對用戶不可見,則在內存不足時保持它不變是毫無意義的。如果你是在這些視圖中存儲 [重要]數據,你做錯了。數據模型應保存在控制器中。
當內存變低時,所有視圖控制器都會調用它們的委託方法:didReceiveMemoryWarning。
UIViewController的默認實現是卸載視圖。
所以,你需要以覆蓋此行爲做的是覆蓋的方法:
- (void)didReceiveMemoryWarning
{
//[super didReceiveMemoryWarning]; - calling this will unload the view
// Relinquish ownership any cached data, images, etc that aren't in use.
}
很可能引發崩潰與停止該應用在這樣的警告釋放內存。 – tobiasbayer
大多數應用程序都有很多viewControllers。你當然應該讓iOS在你的應用程序中卸載大部分viewController。但是在某些情況下(並不是很少見),你有幾個viewController你不想被卸載。對於那些viewControllers你可以使用這個方法。 – adamsiton