本文是練習(xí)打字而作她倘,如有疑問璧微,請聯(lián)系我,第一時(shí)間刪除硬梁。
首先聲明一點(diǎn)前硫,這篇文章可能是因?yàn)槲抑鞴艿腻e(cuò)誤理解導(dǎo)致的,可能是我對網(wǎng)上其他博客理解有誤荧止,假如確實(shí)這樣屹电,很抱歉,可在評論中與我探討跃巡,我搞明白了會把此簡書刪除的危号,謝謝!
一外莲、錯(cuò)誤的認(rèn)知
直接上重點(diǎn)偷线,之前對于Load的認(rèn)知是這樣的声邦,或許是看的博客或者訂閱號或者一些其他途徑翔忽,總之對于他的加載方式是這樣理解的:
Load是只要類所在文件被引用就會被調(diào)用,如果類沒有被引用進(jìn)項(xiàng)目材失,就不會有l(wèi)oad調(diào)用;
我理解的被引用龙巨,指的是引用實(shí)現(xiàn)Load方法的頭文件旨别,即.h秸弛,加入這里就理解錯(cuò)了,那就是錯(cuò)怪各位大神了...下面就不用看了
二绞铃、錯(cuò)誤發(fā)現(xiàn)過程及測試
之前寫的一篇博客《iOS MVVM+RAC 從框架到實(shí)戰(zhàn)》中有對APPDelegte的優(yōu)化如下;
當(dāng)類對象被引入項(xiàng)目時(shí)菲盾,runtime會向每一個(gè)類對象發(fā)送load消息亿汞,load方法還是非常神奇的,因?yàn)樗鼤诿恳粋€(gè)類甚至分類被引入時(shí)僅調(diào)用一次吴裤,調(diào)用的順序是父類優(yōu)先于子類,子類優(yōu)先于分類剖膳,而且load方法不會被類自動(dòng)繼承吱晒,每一個(gè)類中的load方法都不需要像viewDidLoad方法一樣調(diào)用父類的方法
三仑濒、正確的認(rèn)知
iOS中的load方法會在加載類的時(shí)候就被調(diào)用驼壶,這個(gè)加載不是指引用喉酌,而是APP指在啟動(dòng)的時(shí)候就會加載所以得類碌嘀,并調(diào)用每個(gè)類的實(shí)現(xiàn)了的+load方法股冗,他是會在main()函數(shù)之前被調(diào)用的!所以怯疤,這種情況下集峦,只要你新建的類在項(xiàng)目中,并且實(shí)現(xiàn)了Load方法高蜂,那么一定會被調(diào)用,而且調(diào)用的非常早!