IOS視圖控制器的生命周期實(shí)例詳解
IOS視圖控制器
所謂的生命周期,也就是幾個(gè)函數(shù)的調(diào)用順序,這里以用Storyboard來創(chuàng)建一個(gè)ViewController為例
然后我們測試如下代碼
// // ViewController.m // // Created by huangwenchen on 14/12/26. // Copyright (c) 2014年 huangwenchen. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (id)initWithCoder:(NSCoder *)aDecoder{ if (self = [super initWithCoder:aDecoder]) { NSLog(@"initWithCoder Called"); } return self; } - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"viewDidLoad Called"); // Do any additional setup after loading the view, typically from a nib. } - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; NSLog(@"viewWillAppear Called"); } -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; NSLog(@"viewDidAppear Called"); } -(void)awakeFromNib{ NSLog(@"awakeFromNib Called"); } -(void)viewWillLayoutSubviews{ NSLog(@"viewWillLayoutSubviews Called"); } -(void)viewDidLayoutSubviews{ NSLog(@"viewDidLayoutSubviews Called"); } @end
然后,在模擬器上運(yùn)行,輸出為
2014-12-29 19:42:47.904 KVCForCSDN[2370:126741] initWithCoder Called 2014-12-29 19:42:47.907 KVCForCSDN[2370:126741] awakeFromNib Called 2014-12-29 19:42:47.927 KVCForCSDN[2370:126741] viewDidLoad Called 2014-12-29 19:42:47.927 KVCForCSDN[2370:126741] viewWillAppear Called 2014-12-29 19:42:47.961 KVCForCSDN[2370:126741] viewWillLayoutSubviews Called 2014-12-29 19:42:47.963 KVCForCSDN[2370:126741] viewDidLayoutSubviews Called 2014-12-29 19:42:47.970 KVCForCSDN[2370:126741] viewDidAppear Called
所以,調(diào)用順序?yàn)?br />
1 init函數(shù)(init;initWithFrame;initWithCoder;等)--初始化
2 awakeFromNib--在loadView之前的工作放在這里
3 viewDidLoad--注意,一個(gè)ViewController一個(gè)生命周期內(nèi)這個(gè)函數(shù)只會(huì)調(diào)用一次
4 viewWillAppear -- view將要出現(xiàn),每次View消失再出現(xiàn)都會(huì)調(diào)用
5 viewWillLayoutSubviews--簡要對子試圖進(jìn)行布局
6 viewDidLayoutSubivews--完成對子試圖布局
7 viewDidAppear--視圖將要出現(xiàn)在屏幕上
---上述代碼不含部分
8 viewWillDisappear--View將要消失
9 viewDidDisappear--View已經(jīng)消失
這九個(gè)就是通常的視圖控制器生命周期內(nèi)函數(shù)調(diào)用順序,一定要清楚什么樣的代碼應(yīng)該放在視圖控制器生命周期的什么位置
BTY:
didReceiveMemoryWarning
這個(gè)函數(shù)通常也在生命周期的考慮范圍內(nèi),當(dāng)內(nèi)存不足時(shí)候會(huì)調(diào)用,這時(shí)候應(yīng)當(dāng)進(jìn)行適當(dāng)?shù)膬?nèi)存釋放,不然iOS會(huì)強(qiáng)制關(guān)閉當(dāng)前的APP
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
iOS手勢識別的詳細(xì)使用方法(拖動(dòng),縮放,旋轉(zhuǎn),點(diǎn)擊,手勢依賴,自定義手勢)
這篇文章主要介紹了iOS手勢識別的詳細(xì)使用方法(拖動(dòng),縮放,旋轉(zhuǎn),點(diǎn)擊,手勢依賴,自定義手勢),具有一定的參考價(jià)值,有需要的可以參考一下。2016-11-11你應(yīng)該知道的tableViewCell行高計(jì)算處理
這篇文章主要給大家介紹了關(guān)于tableViewCell行高計(jì)算的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12iOS App使用GCD導(dǎo)致的卡頓現(xiàn)象及解決方法
這篇文章主要給大家介紹了關(guān)于iOS App使用GCD導(dǎo)致的卡頓現(xiàn)象及解決方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07iOS應(yīng)用開發(fā)中SQLite的初步配置指南
這篇文章主要介紹了iOS應(yīng)用開發(fā)中SQLite的初步配置指南,SQLite是一個(gè)極輕量級可作嵌入式的數(shù)據(jù)庫,非常適合入門開發(fā)者使用,需要的朋友可以參考下2015-12-12