天天看點

iOS之viewController的生命周期

一、當一個視圖控制器被建立,并在螢幕上顯示的時候。 代碼的執行順序:

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将會被執行,本視圖的所有子視圖将被銷毀

三、按結構可以對iOS的所有ViewController分成兩類:

1.主要用于展示内容的ViewController,這種ViewController主要用于為使用者展示内容,并與使用者互動,如UITableViewController,UIViewController。

2.用于控制和顯示其他ViewController的ViewController。這種ViewController一般都是一個 ViewController的容器。如UINavigationController,UITabbarController。它們都有一個屬 性:viewControllers。其中UINavigationController表示一種Stack式結構,push一個 ViewController或pop一次,是以後一個ViewController一般會依賴前一個ViewController。而 UITabbarController表示一個Array結構,各個ViewController是并列的。

第一種ViewController會經常被繼承,用來顯示不同的資料給使用者。而第二種很少被繼承,除非你真的需要自定義它。