[英]Why isn't viewDidLoad executed when a UIViewController's view becomes visible?
我正在讀一本關於iOS編程的書。 假設我們有兩個viewcontrollers(每個都有自己的視圖),在任何時候,我只能看到其中一個的視圖。 當APP運行時,我通過模擬器發送了“內存警告”。 根據這本書,我應該觀察隱藏的viewcontroller的viewDidLoad再次被觸發,當我“強制”隱藏的一個出現。 但我沒有看到它發生。
換句話說,“內存警告”應該破壞不在屏幕上的視圖。 但我看不到它。
這本書是為iOS5編寫的。 我想知道iOS6 +中是否存在某些行為更改
謝謝
是的,行為在IOS 6.改變開始在IOS 6中,當系統發送一個低存儲器警告一個UIViewController 不卸載其視圖。
viewDidUnload
文檔非常清楚:
在iOS 6.0中已棄用。 在低內存條件下不再清除視圖,因此永遠不會調用此方法。
在第一次使用VIEW時調用它。 它第一次加載。
所以當有人調用時: viewController.view
和viewController.isViewLoaded
為NO
然后加載視圖並調用viewDidLoad
。
視圖永遠不會被卸載(因為iOS 6)。
viewDidLoad
對應於創建UIViewController視圖的時間。 viewWillAppear:
和viewDidAppear:
是UIViewController視圖可見時涉及的關鍵方法。
只有在初始化viewController時才會調用viewDidLoad。
可能是您正在使用導航控制器或標簽欄視圖控制器來調出視圖控制器 - 它們都不會釋放您的視圖控制器,因此不會調用viewDidLoad。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.