IOS開發之UIController生命週期

LoveApp_Han發表於2013-09-05

當一個檢視控制器被建立,並在螢幕上顯示的時候。 程式碼的執行順序
1、 alloc                                   建立物件,分配空間
2、init (initWithNibName) 初始化物件,初始化資料
3、loadView                          從nib載入檢視 ,通常這一步不需要去幹涉。除非你沒有使用xib檔案建立檢視
4、viewDidLoad                   載入完成,可以進行自定義資料以及動態建立其他控制元件
5、viewWillAppear              檢視將出現在螢幕之前,馬上這個檢視就會被展現在螢幕上了
6、viewDidAppear               檢視已在螢幕上渲染完成

當一個檢視被移除螢幕並且銷燬的時候的執行順序,這個順序差不多和上面的相反
1、viewWillDisappear            檢視將被從螢幕上移除之前執行
2、viewDidDisappear             檢視已經被從螢幕上移除,使用者看不到這個檢視了
3、dealloc                                 檢視被銷燬,此處需要對你在init和viewDidLoad中建立的物件進行釋放

關於viewDidUnload :在發生記憶體警告的時候如果本檢視不是當前螢幕上正在顯示的檢視的話, viewDidUnload將會被執行,本檢視的所有子檢視將被銷燬,以釋放記憶體,此時開發者需要手動對viewLoad、viewDidLoad中建立的物件釋放記憶體。 因為當這個檢視再次顯示在螢幕上的時候,viewLoad、viewDidLoad 再次被呼叫,以便再次構造檢視。

通過實踐證明上述得排序有錯誤,前三個步驟應該是:alloc->loadview->init。
不信寫個Demo,試試。

相關文章