viewDidload方法在init初始化方法之前執(zhí)行

一個(gè)vc的聲明周期,通常都是先執(zhí)行init初始化方法,或者自定義的init初始化方法,然后才是執(zhí)行viewDidload系統(tǒng)方法。屬性的setter方法也是在viewDidLoad之前執(zhí)行,但是在寫一個(gè)自定義類的時(shí)候,卻發(fā)現(xiàn)了這樣一個(gè)問(wèn)題:

-  (instancetype)initWithTitle:(NSString *)title {
       self = [super init];
       if (self) {
          NSLog(@"%s", __func__);
          self.view.backgroundColor = [UIColor grayColor];
         _label.text = title;    
       }
}
- (void)viewDidLoad {
       [super viewDidLoad];
       [self p_setupLabel];
}

我在viewDidLoad方法里創(chuàng)建了一個(gè)label,在自定義初始化方法里,給這個(gè)屬性label賦值,按照VC的聲明周期來(lái)說(shuō),在init方法里,給_label賦值的時(shí)候,這個(gè)label應(yīng)該還是nil,因?yàn)関iewDidLoad應(yīng)該是在init之后執(zhí)行,但是實(shí)際上label卻有值。。。
打斷點(diǎn)調(diào)試的時(shí)候,發(fā)現(xiàn)問(wèn)題出在
self.view.backgroundColor = [UIColor grayColor];
這里,當(dāng)斷點(diǎn)走到這一步時(shí)候,下一步并不是給label賦值的代碼,而是直接跳到viewDidLoad了,執(zhí)行完之后,又跳回到初始化方法里,執(zhí)行后面的代碼。

所以說(shuō)viewDidLoad方法并沒(méi)有在init方法之前執(zhí)行,而是執(zhí)行init的過(guò)程中,調(diào)用了這個(gè)vc的屬性,或者設(shè)置了它的subView,它就會(huì)立即去執(zhí)行viewDidload方法。。。

在starkoverflow也有人解釋了這種情況
http://stackoverflow.com/questions/31489957/viewdidload-is-called-before-whole-init-method-is-executed

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官方文檔 初始化 Initialization是為準(zhǔn)備使用類,結(jié)構(gòu)體或者枚舉實(shí)例的一個(gè)過(guò)程。這個(gè)過(guò)程涉及了在實(shí)例里...
    hrscy閱讀 1,202評(píng)論 0 1
  • 初始化 (Initialization) 自從蘋果2014年發(fā)布Swift,到現(xiàn)在已經(jīng)兩年多了,而Swift也來(lái)到...
    Lebron_James閱讀 1,269評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • 初始化(Initialization) 初始化是類、結(jié)構(gòu)體、枚舉類型的準(zhǔn)備過(guò)程。這個(gè)過(guò)程涉及到所有存儲(chǔ)屬性的初始化...
    泗哥閱讀 5,709評(píng)論 0 3
  • 駕……駕……駕…… 啪……啪……啪…… 遠(yuǎn)方傳來(lái)男人的聲音和鞭子抽打馬匹的聲音,越來(lái)越近了。 路的中央躺著許多的尸...
    火上冰凌亙古今閱讀 290評(píng)論 0 2

友情鏈接更多精彩內(nèi)容