單個 viewController 的生命周期
1.alloc:創(chuàng)建對象氧枣,分配空間
2.initWithCoder:(NSCoder *)aDecoder(如果使用storyboard或者xib)
3.init (initWithNibName):如果通過xib初始化對象
4.awakeFromNib:這個方法用的時候沐兵,outlet還沒有連接起來,是view Controller剛從storyboard建的時候便监,沒有完全建好扎谎,不過可能有一些事情要在這個方法里面完成,比如splitViewDelegate烧董,需要在非常早期完成毁靶。
5.loadView:加載view
6.viewDidLoad:view加載完畢
7.viewWillAppear:控制器的view將要顯示
8.viewWillLayoutSubviews:控制器的view將要布局子控件
9.viewDidLayoutSubviews:控制器的view布局子控件完成這期間系統(tǒng)可能會多次調(diào)用viewWillLayoutSubviews 、viewDidLayoutSubviews 倆個方法
10.viewDidAppear:控制器的view完全顯示
11.viewWillDisappear:控制器的view即將消失的時候這期間系統(tǒng)也會調(diào)用viewWillLayoutSubviews 逊移、viewDidLayoutSubviews 兩個方法
12.viewDidDisappear:控制器的view完全消失的時候
13.dealloc:控制器銷毀
當(dāng)我們點擊push的時候
首先會加載下一個界面然后才會調(diào)用當(dāng)前界面的消失方法
1.alloc:ViewController2
2.initWithCoder:(NSCoder *)aDecoder:ViewController2
3.init (initWithNibName):ViewController2
4.awakeFromNib:ViewController2
5.loadView:ViewController2加載view
6.viewDidLoad:ViewController2view加載完畢
7.viewWillDisappear:ViewController1 將要消失
8.viewWillAppear:ViewController2將要出現(xiàn)
9.viewWillLayoutSubviews:ViewController2
10.viewDidLayoutSubviews:ViewController2
11.viewDidDisappear:ViewController1 完全消失
12.viewDidAppear:ViewController2完全出現(xiàn)
當(dāng)一個視圖被pop時
屏幕并且銷毀的時候的執(zhí)行順序预吆,這個順序差不多和上面的相反
1.viewWillDisappear:ViewController2視圖將被從屏幕上移除之前執(zhí)行
2.viewWillAppear:ViewController1控制器的view將要顯示
3.viewDidDisappear:ViewController2視圖已經(jīng)被從屏幕上移除,用戶看不到這個視圖了
4.viewDidAppear:ViewController1
5.dealloc:ViewController2視圖被銷毀胳泉,此處需要對你在init和viewDidLoad中創(chuàng)建的對象進(jìn)行釋放
注:如果以上原理內(nèi)容掌握了拐叉,可以擴展看下這篇文章:iOS頁面Push卡頓優(yōu)化