iOS生命周期

iOS程序的啟動(dòng)順序

  1. 程序入口

    進(jìn)入main函數(shù)衡便,設(shè)置AppDelegate為函數(shù)的代理

  2. 程序完成加載

[AppDelegate application:didFinishLaunchingWithOptions:]
  1. 創(chuàng)建window窗口
  2. 程序被激活
[AppDelegate applicationDidBecomeActive:]
  1. 當(dāng)點(diǎn)擊home將程序掛到后臺(tái)的時(shí)候

    程序取消激活狀態(tài) 程序進(jìn)入后臺(tái)

[AppDelegate applicationWillResignActive:];
[AppDelegate applicationDidEnterBackground:];
  1. 當(dāng)再次點(diǎn)擊app圖標(biāo)進(jìn)入工程時(shí)

    程序進(jìn)入前臺(tái) 程序被激活

[AppDelegate applicationWillEnterForeground:];[AppDelegate applicationWillEnterForeground:];
[AppDelegate applicationDidBecomeActive:];

UIViewController的生命周期

函數(shù)方法執(zhí)行順序如下

  1. 非storyBoard(xib或非xib)都走這個(gè)方法
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
  1. 如果連接了串聯(lián)圖storyBoard 走這個(gè)方法
- (instancetype)initWithCoder:(NSCoder *)aDecoder
  1. xib 加載 完成(無論是storyBoard還是其他方式都會(huì)走這個(gè)方法)
- (void)awakeFromNib
  1. 加載視圖(默認(rèn)從nib)
- (void)loadView
  1. 視圖控制器中的視圖加載完成,viewController自帶的view加載完成
- (void)viewDidLoad
  1. 視圖將要出現(xiàn)
- (void)viewWillAppear:(BOOL)animated
  1. view 即將布局其 Subviews
- (void)viewWillLayoutSubviews
  1. view 已經(jīng)布局其 Subviews
- (void)viewDidLayoutSubviews
  1. 視圖已經(jīng)出現(xiàn)
- (void)viewDidAppear:(BOOL)animated
  1. 視圖將要消失
- (void)viewWillDisappear:(BOOL)animated 
  1. 視圖已經(jīng)消失
- (void)viewDidDisappear:(BOOL)animated
  1. 出現(xiàn)內(nèi)存警告
- (void)didReceiveMemoryWarning
  1. 視圖被銷毀
- (void)dealloc

詳解

loadView

當(dāng)執(zhí)行到loadView方法時(shí)苫拍,如果視圖控制器是通過nib創(chuàng)建艇纺,那么視圖控制器已經(jīng)從nib文件中被解檔并創(chuàng)建好了芦瘾,接下來任務(wù)就是對(duì)view進(jìn)行初始化拳球。
loadView方法在UIViewController對(duì)象的view被訪問且為空的時(shí)候調(diào)用。這是它與awakeFromNib方法的一個(gè)區(qū)別。
假設(shè)我們?cè)谔幚韮?nèi)存警告時(shí)釋放view屬性:self.view = nil雏节。因此loadView方法在視圖控制器的生命周期內(nèi)可能被調(diào)用多次胜嗓。
loadView方法不應(yīng)該直接被調(diào)用,而是由系統(tǒng)調(diào)用钩乍。它會(huì)加載或創(chuàng)建一個(gè)view并把它賦值給UIViewController的view屬性辞州。
在創(chuàng)建view的過程中,首先會(huì)根據(jù)nibName去找對(duì)應(yīng)的nib文件然后加載寥粹。如果nibName為空或找不到對(duì)應(yīng)的nib文件变过,則會(huì)創(chuàng)建一個(gè)空視圖(這種情況一般是純代碼)
注意:在重寫loadView方法的時(shí)候,不要調(diào)用父類的方法涝涤。

viewDidDisappear

view已經(jīng)消失或被覆蓋媚狰,此時(shí)已經(jīng)調(diào)用removeFromSuperView

視圖的生命周期

  • [ViewController initWithCoder:]或[ViewController initWithNibName:Bundle]:首先從歸檔文件中加載UIViewController對(duì)象。即使是純代碼阔拳,也會(huì)把nil作為參數(shù)傳給后者崭孤。
  • awakeFromNib:作為第一個(gè)方法的助手,方法處理一些額外的設(shè)置糊肠。
  • loadView:創(chuàng)建或加載一個(gè)view并把它賦值給UIViewController的view屬性辨宠。
  • viewDidLoad此時(shí)整個(gè)視圖層次(view hierarchy)已經(jīng)放到內(nèi)存中,可以移除一些視圖货裹,修改約束嗤形,加載數(shù)據(jù)等。
  • viewWillAppear:視圖加載完成弧圆,并即將顯示在屏幕上赋兵。還沒設(shè)置動(dòng)畫,可以改變當(dāng)前屏幕方向或狀態(tài)欄的風(fēng)格等搔预。
  • viewWillLayoutSubviews即將開始子視圖位置布局
  • viewDidLayoutSubviews用于通知視圖的位置布局已經(jīng)完成
  • viewDidAppear:視圖已經(jīng)展示在屏幕上霹期,可以對(duì)視圖做一些關(guān)于展示效果方面的修改。
  • viewWillDisappear:視圖即將消失
  • viewDidDisappear:視圖已經(jīng)消失
  • dealloc:視圖銷毀的時(shí)候調(diào)用
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拯田,一起剝皮案震驚了整個(gè)濱河市历造,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌勿锅,老刑警劉巖帕膜,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枣氧,死亡現(xiàn)場(chǎng)離奇詭異溢十,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)达吞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門张弛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事吞鸭∷露” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵刻剥,是天一觀的道長遮咖。 經(jīng)常有香客問我,道長造虏,這世上最難降的妖魔是什么御吞? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮漓藕,結(jié)果婚禮上陶珠,老公的妹妹穿的比我還像新娘。我一直安慰自己享钞,他們只是感情好揍诽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著栗竖,像睡著了一般暑脆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上划滋,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天饵筑,我揣著相機(jī)與錄音,去河邊找鬼处坪。 笑死根资,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的同窘。 我是一名探鬼主播玄帕,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼想邦!你這毒婦竟也來了裤纹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤丧没,失蹤者是張志新(化名)和其女友劉穎鹰椒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呕童,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡漆际,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了夺饲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奸汇。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡施符,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出擂找,到底是詐尸還是另有隱情戳吝,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布贯涎,位于F島的核電站听哭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏塘雳。R本人自食惡果不足惜欢唾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粉捻。 院中可真熱鬧礁遣,春花似錦、人聲如沸肩刃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盈包。三九已至沸呐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呢燥,已是汗流浹背崭添。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叛氨,地道東北人呼渣。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像寞埠,于是被迫代替她去往敵國和親屁置。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容