initialize、load

無意中看到這方面的內(nèi)容岖食,查了查寓搬,記錄下~

load

OC也是運行時語言,在運行之前肯定要加在程序里的一些類文件县耽,而這個load方法就是在加載類的時候調(diào)用的句喷,可以在里面做一些自己的處理。從NSObject類里看到這個方法表面上看起來跟其他的類方法沒有什么差別兔毙,但是其實是有差別的唾琼。其實可以嘗試下寫個類重寫下這個方法,會發(fā)現(xiàn)他的調(diào)用在main之前 澎剥,而且無關(guān)你有沒有使用這個類锡溯。并且如果父類子類及類別都重寫此方法,會發(fā)現(xiàn)調(diào)用的順序是父類-》子類-》類別。

load 方法 會在程序加載類文件的時候就會調(diào)用 無關(guān)乎這個類是否用到祭饭,所有程序里存在的類都會調(diào)用load方法芜茵,一般不在這個方法里做太多的事情。

如果子類父類及類別都復(fù)寫了這個方法倡蝙,會優(yōu)先調(diào)用父類九串,然后子類 ,最后再是類別寺鸥。

load方法調(diào)用時猪钮,系統(tǒng)處于脆弱狀態(tài),如果調(diào)用別的類的方法胆建,且該方法依賴于那個類的load方法進行初始化設(shè)置烤低,那么必須確保那個類的load方法已經(jīng)調(diào)用了,如果別的類還沒有裝載調(diào)用load方法笆载,就可能產(chǎn)生意想不到的異常扑馁,其實load方法的順序跟程序工程文件 里 complie source的加載順序有關(guān)。load方法的環(huán)境不穩(wěn)定凉驻,但是線程安全檐蚜。常見使用場景 也就是在load 里做 Method Swizzle,例如

+ (void)load {

Method originalFunc = class_getInstanceMethod([self class], @selector(originalFunc));

Method swizzledFunc = class_getInstanceMethod([self class], @selector(swizzledFunc));

method_exchangeImplementations(originalFunc, swizzledFunc);

}

一般來說沿侈,除了Method Swizzle闯第,別的邏輯都不應(yīng)該放在load方法中實現(xiàn)。

而initialize方法不同缀拭,會在你第一次使用的時候會調(diào)用咳短,調(diào)用的時候 運行環(huán)境基本已經(jīng)健全了

這個方法在第一次給某個類發(fā)送消息時調(diào)用(比如實例化一個對象),并且只會調(diào)用一次蛛淋。initialize方法實際上是一種惰性調(diào)用咙好,也就是說如果一個類一直沒被用到,那它的initialize方法也不會被調(diào)用褐荷,這一點有利于節(jié)約資源

與load方法不同之處在于勾效,即使子類沒有實現(xiàn)initialize方法,也會調(diào)用父類的方法叛甫,這會導(dǎo)致一個很嚴(yán)重的問題:[Man alloc]init] 之后調(diào)用倆次person的initialize 方法而子類Man并沒有實現(xiàn)initialize方法

雖然initialize方法對一個類而言只會調(diào)用一次层宫,但這里由于出現(xiàn)了兩個類,所以調(diào)用兩次符合規(guī)則其监,但不符合我們的需求萌腿。正確使用initialize方法的姿勢如下

+ (void)initialize {

if (self == [Parent class]) {

NSLog(@"Initialize Parent, caller Class %@", [self class]);

? ?}

}

一般做一些全局變量和靜態(tài)變量的初始化


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抖苦,隨后出現(xiàn)的幾起案子毁菱,更是在濱河造成了極大的恐慌米死,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贮庞,死亡現(xiàn)場離奇詭異峦筒,居然都是意外死亡,警方通過查閱死者的電腦和手機窗慎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門物喷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捉邢,你說我怎么就攤上這事脯丝∩滩玻” “怎么了伏伐?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長晕拆。 經(jīng)常有香客問我藐翎,道長,這世上最難降的妖魔是什么实幕? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任吝镣,我火速辦了婚禮,結(jié)果婚禮上昆庇,老公的妹妹穿的比我還像新娘末贾。我一直安慰自己,他們只是感情好整吆,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布拱撵。 她就那樣靜靜地躺著,像睡著了一般表蝙。 火紅的嫁衣襯著肌膚如雪拴测。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天府蛇,我揣著相機與錄音集索,去河邊找鬼。 笑死汇跨,一個胖子當(dāng)著我的面吹牛务荆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播穷遂,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蛹含,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了塞颁?” 一聲冷哼從身側(cè)響起浦箱,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吸耿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后酷窥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咽安,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年蓬推,在試婚紗的時候發(fā)現(xiàn)自己被綠了妆棒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡沸伏,死狀恐怖糕珊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毅糟,我是刑警寧澤红选,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站姆另,受9級特大地震影響喇肋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜迹辐,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一蝶防、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧明吩,春花似錦间学、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躏鱼,卻和暖如春氮采,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背染苛。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工鹊漠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茶行。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓躯概,卻偏偏與公主長得像,于是被迫代替她去往敵國和親畔师。 傳聞我的和親對象是個殘疾皇子娶靡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

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

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,721評論 0 9
  • Objective C類方法load和initialize的區(qū)別過去兩個星期里看锉,為了完成一個工作姿锭,接觸到了NSOb...
    亦晴工作室閱讀 1,321評論 0 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理塔鳍,服務(wù)發(fā)現(xiàn),斷路器呻此,智...
    卡卡羅2017閱讀 134,665評論 18 139
  • Objective C類方法load和initialize的區(qū)別過去兩個星期里轮纫,為了完成一個工作,接觸到了NSOb...
    哈哈哈_哈哈哈閱讀 415評論 0 1
  • 二十歲焚鲜,無資本掌唾,無未來 你家境一般,父母都是普通員工忿磅,你在這個城市的生活費是每月一千二糯彬,沒事下下館子,一個月添件衣...
    慕宜閱讀 124評論 0 0