5

關於didReceiveMemoryWarning/viewDidUnload的問題。顯示視圖控制器時調用了didReceiveMemoryWarning/viewDidUnload嗎?

如果我的應用程序有許多視圖控制器,其中一個顯示,和其他人回來(因爲我使用的是導航控制器或標籤欄控制器,它並不重要),其視圖控制器將獲得didReceiveMemoryWarning/viewDidUnload,所有這些,只隱藏,或只顯示?

是否有可能顯示VC收到didReceiveMemoryWarning但不是viewDidUnload(因爲如圖所示,它沒有任何意義)。

順便說一句,我有看到這個圖之後,這些問題: UIViewController init/dealloc flow chart

非常感謝幫助。

+0

從你的圖表中可以看出,viewDidUnload僅在調用didReceiveMemoryWarning時被調用?嗯,這不是真的 – Stas 2012-02-10 13:18:11

+0

這就是我的問題的原因。你知道更好的圖嗎?謝謝。 – Ricardo 2012-02-10 13:22:39

+1

看來這個人有答案: http://www.nextconceptdc.com/blog/wp-content/uploads/2011/08/UIViewControllerLifecycle.png – Ricardo 2012-02-10 13:23:47

回答

1

首先,有兩種方法didReceiveMemwarnings:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 

當應用程序接收到來自系統中的存儲器警告被調用。 和UIViewController的

- (void)didReceiveMemoryWarning 

發送至當應用程序接收到一個存儲器警告視圖控制器。其次,首先在這些方法中調用代碼(當然是),然後在那些沒有超級視圖的控制器中(即那些當前沒有顯示的控制器),視圖被刪除並且發送viewDidUnload

0

當收到內存警告時,它會在應用程序級接收到,所有viewControllers和appdelegate都會收到它。

調用任何或所有控制器的viewDidUnload並不是必要的。這嚴格取決於操作系統認爲內存警告的重要性。就像第一次 - 你的應用程序收到Level 1警告,然後Level 2,很可能在第三次(在很短的時間間隔內)操作系統將終止應用程序,認爲它已經進入不穩定狀態。

相關問題