ViewController 生命周期

先總的說下調(diào)用順序:

  1. initWithNibName
  2. loadView
  3. viewDidload
  4. viewWillAppear
  5. viewWillLayoutSubviews
  6. viewDidLayoutSubviews
  7. viewDidAppear
  8. viewWillDisappear
  9. viewDidDisappear
  10. dealloc

initWithNibName

- (instancetype)initWithNibName:(NSString *)nibNameOrNil 
                         bundle:(NSBundle *)nibBundleOrNil{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
            self.edgesForExtendedLayout = UIRectEdgeAll;
            self.extendedLayoutIncludesOpaqueBars = YES;
            self.automaticallyAdjustsScrollViewInsets = NO;
        } else {
            self.wantsFullScreenLayout = YES;
        }
    
}
    return self;
    }
}

在這個函數(shù)中應(yīng)該只有相關(guān)數(shù)據(jù)的初始化,而且這些數(shù)據(jù)都是比較關(guān)鍵的數(shù)據(jù)粒督,不要出現(xiàn)創(chuàng)建view的代碼尚辑,也不要調(diào)self.view片仿,否則會導(dǎo)致ViewController創(chuàng)建view;View的創(chuàng)建留給后面的方法。當(dāng)然,如果你是用XIB,可以用這個方法初始化xib文件喉誊。如上代碼,我設(shè)置了些參數(shù),例如* self.automaticallyAdjustsScrollViewInsets = NO;*告訴系統(tǒng)不要對我的scrollview做自適應(yīng)inset,否則VC的controller會把scrollview頂下來,造成計算偏差.

loadView

loadView 方法是查看你有木沒有 xib画髓,有的話就用 xib 加載基本信息缩举,木有的話就會創(chuàng)建一個空白的 UIView衣赶,然后把它作為這個 ViewController 的 view.所以之后我們可以在viewDidLoad中調(diào)用self.view,并進行自定義操作.一般來說,我們不去重寫這個方法,重頭戲都放在viewDidLoad中.
關(guān)于loadView,他其實是lazy load的,就是懶加載,當(dāng)顯示的調(diào)用self.view時,如果你重寫了這個方法,那么系統(tǒng)就會調(diào)用loadView,調(diào)用完后,再自動調(diào)用ViewDidLoad函數(shù).這時就有可能造成死循環(huán),這也是我們一般不去重寫loadView方法的一個原因.

viewDidLoad

這個時候,view已然加載到了內(nèi)存中,我們可以隨心所欲的添加subView,或者填充數(shù)據(jù).最好不要操作self.view诊赊。

viewWillAppear

view即將顯示,但此時其superView還為nil府瞄,即view還沒有加到任何其他view中碧磅,但準(zhǔn)備要添加到其他View中了。

在view被添加到superview之前摘能,切換動畫之前調(diào)用续崖。在這里可以進行一些顯示前的處理。比如鍵盤彈出团搞,一些特殊的過程動畫(比如狀態(tài)條和navigationbar顏色).

viewWillLayoutSubviews

官方文檔如下:

When a view’s bounds change, the view adjusts the position of its subviews. Your view controller can override this method to make changes before the view lays out its subviews. The default implementation of this method does nothing.

除了按順序調(diào)用外,當(dāng)view大小改變時,我們可以在這里調(diào)整subview的位置,大小等。不過一般來說,我們在創(chuàng)建subview時會設(shè)定其autoresizingMask多艇,由系統(tǒng)幫助我們調(diào)整,畢竟人家的方法有硬件的優(yōu)化

viewDidLayoutSubviews

view已經(jīng)布局其Subviews逻恐。比如view的bounds改變了,已經(jīng)調(diào)整Subviews的位置,在調(diào)整完成之后要做的一些工作就可以在該方法中實現(xiàn)复隆。例如可以reloadData,或者也可以做layoutSubview的工作拨匆。

viewDidAppear

view已經(jīng)顯示,即已經(jīng)加到其superView中了挽拂。view顯示后惭每,在切換動畫后,如果有需要的操作亏栈,可以在這里加入相關(guān)代碼台腥,例如reloadData。

viewWillDisappear

view即將從superView中移除绒北,此時還沒有調(diào)用removeFromeSuperView黎侈。這是可以處理一些小問題,例如顯示statusBar.修改子scrollview是否可以滑動等。

viewDidDisappear

view已經(jīng)從superView中移除了,可以恢復(fù)一些控件屬性.

dealloc

VC被釋放.

需要注意的方法

viewDidUnload(iOS3.0引入,iOS6廢棄了該方法)

viewWillUnload(iOS6廢棄了該方法)

didReceiveMemoryWarning

內(nèi)存吃緊時(系統(tǒng)發(fā)出警告或者ViewController本身調(diào)用導(dǎo)致didReceiveMemoryWarning被調(diào)用)闷游。
注意是除當(dāng)前正在展示的view 所屬 viewController 以外所有已經(jīng)在內(nèi)存里面的viewController 執(zhí)行 didReceiveMemoryWarning方法峻汉,而不是當(dāng)前viewController 執(zhí)行 didReceiveMemoryWarning。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脐往,一起剝皮案震驚了整個濱河市休吠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌业簿,老刑警劉巖蛛碌,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辖源,居然都是意外死亡蔚携,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門克饶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酝蜒,“玉大人,你說我怎么就攤上這事矾湃⊥瞿裕” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵邀跃,是天一觀的道長霉咨。 經(jīng)常有香客問我,道長拍屑,這世上最難降的妖魔是什么途戒? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任次哈,我火速辦了婚禮锋边,結(jié)果婚禮上负甸,老公的妹妹穿的比我還像新娘。我一直安慰自己趾撵,他們只是感情好胡本,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布坠宴。 她就那樣靜靜地躺著曾掂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪顽腾。 梳的紋絲不亂的頭發(fā)上近零,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音抄肖,去河邊找鬼久信。 笑死,一個胖子當(dāng)著我的面吹牛憎瘸,可吹牛的內(nèi)容都是我干的入篮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼幌甘,長吁一口氣:“原來是場噩夢啊……” “哼潮售!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起锅风,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤酥诽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后皱埠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肮帐,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年边器,在試婚紗的時候發(fā)現(xiàn)自己被綠了训枢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡忘巧,死狀恐怖恒界,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砚嘴,我是刑警寧澤十酣,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站际长,受9級特大地震影響耸采,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜工育,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一虾宇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧翅娶,春花似錦文留、人聲如沸好唯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜕提,卻和暖如春森书,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谎势。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工凛膏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脏榆。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓猖毫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親须喂。 傳聞我的和親對象是個殘疾皇子吁断,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

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