學(xué)習(xí)過(guò)安卓深知Activity的生命周期的重要压真,現(xiàn)在我也大概記錄一下ios的生命周期的資料车吹。??
//類(lèi)的初始化方法
+ (void)initialize;
//對(duì)象初始化方法
- (instancetype)init;
//從歸檔初始化
- (instancetype)initWithCoder:(NSCoder *)coder;
//加載視圖
-(void)loadView;
//將要加載視圖
- (void)viewDidLoad;
//將要布局子視圖
-(void)viewWillLayoutSubviews;
//已經(jīng)布局子視圖
-(void)viewDidLayoutSubviews;
//內(nèi)存警告
- (void)didReceiveMemoryWarning;
//已經(jīng)展示
-(void)viewDidAppear:(BOOL)animated;
//將要展示
-(void)viewWillAppear:(BOOL)animated;
//將要消失
-(void)viewWillDisappear:(BOOL)animated;
//已經(jīng)消失
-(void)viewDidDisappear:(BOOL)animated;
//被釋放
-(void)dealloc;
還有一些需要注意的地方
1:initialize函數(shù)并不會(huì)每次創(chuàng)建對(duì)象都調(diào)用宦焦,只有在這個(gè)類(lèi)第一次創(chuàng)建對(duì)象時(shí)才會(huì)調(diào)用博秫,做一些類(lèi)的準(zhǔn)備工作督怜,再次創(chuàng)建這個(gè)類(lèi)的對(duì)象丘跌,initalize方法將不會(huì)被調(diào)用袭景,對(duì)于這個(gè)類(lèi)的子類(lèi),如果實(shí)現(xiàn)了initialize方法闭树,在這個(gè)子類(lèi)第一次創(chuàng)建對(duì)象時(shí)會(huì)調(diào)用自己的initalize方法耸棒,之后不會(huì)調(diào)用,如果沒(méi)有實(shí)現(xiàn)蔼啦,那么它的父類(lèi)將替它再次調(diào)用一下自己的initialize方法榆纽,以后創(chuàng)建也都不會(huì)再調(diào)用。因此捏肢,如果我們有一些和這個(gè)相關(guān)的全局變量奈籽,可以在這里進(jìn)行初始化。
2:init方法和initCoder方法相似鸵赫,只是被調(diào)用的環(huán)境不一樣衣屏,如果用代碼進(jìn)行初始化,會(huì)調(diào)用init辩棒,從nib文件或者歸檔進(jìn)行初始化狼忱,會(huì)調(diào)用initCoder膨疏。
3:loadView方法是開(kāi)始加載視圖的起始方法,除非手動(dòng)調(diào)用钻弄,否則在ViewController的生命周期中沒(méi)特殊情況只會(huì)被調(diào)用一次佃却。
4:viewDidLoad方法是我們最常用的方法的,類(lèi)中成員對(duì)象和變量的初始化我們都會(huì)放在這個(gè)方法中窘俺,在類(lèi)創(chuàng)建后饲帅,無(wú)論視圖的展現(xiàn)或消失,這個(gè)方法也是只會(huì)在將要布局時(shí)調(diào)用一次瘤泪。
5:viewWillAppare:視圖將要展現(xiàn)時(shí)會(huì)調(diào)用灶泵。
6:viewWillLayoutSubviews:在viewWillAppare后調(diào)用,將要對(duì)子視圖進(jìn)行布局对途。
7:viewDidLayoutSubviews:已經(jīng)布局完成子視圖赦邻。
8:viewDidAppare:視圖完成顯示時(shí)調(diào)用。
9:viewWillDisappare:視圖將要消失時(shí)調(diào)用实檀。
10:viewDidDisappare:視圖已經(jīng)消失時(shí)調(diào)用惶洲。
11:dealloc:controller被釋放時(shí)調(diào)用。
注意:經(jīng)過(guò)測(cè)試膳犹,從nib文件加載的controller湃鹊,只要不釋放,在每次viewWillAppare時(shí)都會(huì)調(diào)用layoutSubviews方法镣奋,有時(shí)甚至?xí)趘iewDidAppare后在調(diào)用一次layoutSubviews,而重點(diǎn)是從代碼加載的則只會(huì)在開(kāi)始調(diào)用一次怀愧,之后都不會(huì)侨颈,所以注意,在layoutSubviews中寫(xiě)相關(guān)的布局代碼十分危險(xiǎn)
以上是在網(wǎng)上找到的一些資料芯义,雖然是OC的不過(guò)無(wú)關(guān)緊要哈垢,函數(shù)名都是一樣的。