init-初始化程序
ViewController *vc = [[ViewController alloc] init];
NSLog(@"%d", 1);
viewDidLoad-加載視圖
- (void)loadView {
[super loadView];
NSLog(@"%s", __FUNCTION__);
}
viewWillAppear-UIViewController對象的視圖即將加入窗口時(shí)調(diào)用;
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"%s", __FUNCTION__);
}
- loadView 和 viewDidLoad 在一個(gè)VC的生命周期中只走一次
viewWillAppear-UIViewController對象的視圖即將加入到窗口時(shí)調(diào)用耳鸯;
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"%s", __FUNCTION__);
}
viewDidAppear-UIViewController對象的視圖已經(jīng)加入到窗口時(shí)調(diào)用;
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"%s", __FUNCTION__);
}
viewWillDisappear-UIViewController對象的視圖即將消失棋嘲、被覆蓋或是隱藏時(shí)調(diào)用;
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSLog(@"%s", __FUNCTION__);
}
viewDidDisappear-UIViewController對象的視圖已經(jīng)消失矩桂、被覆蓋或是隱藏時(shí)調(diào)用沸移;
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSLog(@"%s", __FUNCTION__);
}
上述代碼中使用了FUNCTION對當(dāng)前所處位置的函數(shù)進(jìn)行了打印, 根據(jù)打印出來的先后順序來判斷視圖的生命周期的運(yùn)行順序耍鬓。
1) - (void)viewDidLoad阔籽;
一個(gè)APP在載入時(shí)會先通過調(diào)用loadView方法或者載入IB中創(chuàng)建的初始界面的方法,將視圖載入到內(nèi)存中牲蜀。然后會調(diào)用viewDidLoad方法來進(jìn)行進(jìn)一步的設(shè)置笆制。通常,我們對于各種初始數(shù)據(jù)的載入涣达,初始設(shè)定等很多內(nèi)容在辆,都會在這個(gè)方法中實(shí)現(xiàn),所以這個(gè)方法是一個(gè)很常用度苔,很重要的方法匆篓。
但是要注意,這個(gè)方法只會在APP剛開始加載的時(shí)候調(diào)用一次寇窑,以后都不會再調(diào)用它了鸦概,所以只能用來做初始設(shè)置。
2)- (void)viewWillAppear:(BOOL)animated;
系統(tǒng)在載入所有數(shù)據(jù)后甩骏,將會在屏幕上顯示視圖窗市,這時(shí)會先調(diào)用這個(gè)方法先慷。通常我們會利用這個(gè)方法,對即將顯示的視圖做進(jìn)一步的設(shè)置咨察。例如论熙,我們可以利用這個(gè)方法來設(shè)置設(shè)備不同方向時(shí)該如何顯示。
另外一方面摄狱,當(dāng)APP有多個(gè)視圖時(shí)脓诡,在視圖間切換時(shí),并不會再次載入viewDidLoad方法媒役,所以如果在調(diào)入視圖時(shí)祝谚,需要對數(shù)據(jù)做更新,就只能在這個(gè)方法內(nèi)實(shí)現(xiàn)了刊愚。所以這個(gè)方法也非常常用踊跟。
- (void)viewDidAppear:(BOOL)animated踩验;
有時(shí)候鸥诽,由于一些特殊的原因,我們不能在viewWillApper方法里箕憾,對視圖進(jìn)行更新牡借。那么可以重寫這個(gè)方法,在這里對正在顯示的視圖進(jìn)行進(jìn)一步的設(shè)置袭异。
- (void)viewWillDisappear:(BOOL)animated钠龙;
在視圖變換時(shí),當(dāng)前視圖在即將被移除御铃、或者被覆蓋時(shí)碴里,會調(diào)用這個(gè)方法進(jìn)行一些善后的處理和設(shè)置。
由于在IOS4之后上真,系統(tǒng)允許將APP在后臺掛起咬腋,所以在按了Home鍵之后,系統(tǒng)并不會調(diào)用這個(gè)方法睡互,因?yàn)榫瓦@個(gè)APP本身而言根竿,APP顯示的view,仍是掛起時(shí)候的view就珠,所以并不會調(diào)用這個(gè)方法寇壳。
- (void)viewDidDisappear:(BOOL)animated;
我們可以重寫這個(gè)方法妻怎,對已經(jīng)消失壳炎,或者被覆蓋,或者已經(jīng)隱藏了的視圖做一些其他操作逼侦。