當一個視圖控制器被創(chuàng)建为肮,并在屏幕上顯示的時候垃僚, 代碼的執(zhí)行順序:
-
alloc
創(chuàng)建對象榔昔,分配空間 -
init (initWithNibName)
初始化對象茸炒,初始化數(shù)據(jù) -
loadView
從nib載入視圖 兵睛,通常這一步不需要去干涉昼接。除非你沒有使用xib文件創(chuàng)建視圖 -
viewDidLoad
載入完成洞斯,可以進行自定義數(shù)據(jù)以及動態(tài)創(chuàng)建其他控件 -
viewWillAppear
視圖將出現(xiàn)在屏幕之前尝丐,馬上這個視圖就會被展現(xiàn)在屏幕上了 -
viewDidAppear
視圖已在屏幕上渲染完成
當一個視圖被移除屏幕并且銷毀的時候的執(zhí)行順序:
-
viewWillDisappear
視圖將被從屏幕上移除之前執(zhí)行 -
viewDidDisappear
視圖已經(jīng)被從屏幕上移除掺逼,用戶看不到這個視圖了 -
dealloc
視圖被銷毀吃媒,此處需要對你在init和viewDidLoad中創(chuàng)建的對象進行釋放 - 關于
viewDidUnload
:在發(fā)生內存警告的時候如果本視圖不是當前屏幕上正在顯示的視圖的話, viewDidUnload將會被執(zhí)行吕喘,本視圖的所有子視圖將被銷毀赘那,以釋放內存,此時開發(fā)者需要手動對viewLoad、viewDidLoad中創(chuàng)建的對象釋放內存氯质。 因為當這個視圖再次顯示在屏幕上的時候募舟,viewLoad、viewDidLoad 再次被調用病梢,以便再次構造視圖胃珍。
當我們創(chuàng)建一個UIViewController類的對象時梁肿,系統(tǒng)會生成幾個默認的方法,這些方法的調用順序如下:
- (void)viewDidLoad觅彰;
- (void)viewDidUnload吩蔑;
- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated填抬;
- (void)viewWillDisappear:(BOOL)animated烛芬;
- (void)viewDidDisappear:(BOOL)animated;