load和initialize方法

前言

我們將3個類A、B同诫、C分別表示為父類卦停、子類、子類的分類來了解load和initialize

注意:
1.下文中所說的類都是直接或者間接繼承NSObject
2.這里只分析的類中實現(xiàn)+load和+initialize方法的情況岛请,不包含主動調用

使用場景

  • +load方法通常用來進行Method Swizzle

  • +initialize方法一般用于初始化全局變量或靜態(tài)變量

調用時機

  • load方法會在mian函數(shù)之前調用,會循環(huán)調用所有類(包括分類)的 +load 方法

  • initialize的調用是在第一次主動使用當前類的時候

調用次數(shù)

  • load和initialize在類中只要實現(xiàn)都會調用一次(非super,非主動調用)

執(zhí)行的順序

  • +load方法:A -> B -> C ,即 父類 -> 子類 -> 分類

  • +initialize方法: A -> C ,即 父類 -> 分類

方法實現(xiàn)方式

  • +load使用函數(shù)內存地址的方式 (*load_method)(cls, SEL_load);

  • +initialize使用發(fā)送消息 objc_msgSend 的方式

子類和父類

  • load方法不會考慮對NSObject的繼承警绩,所有類實現(xiàn)load方法就會實現(xiàn)崇败,沒有也不會沿用父類方法

  • 子類不實現(xiàn)initialize方法,父類實現(xiàn)initialize方法肩祥,子類沿用父類的方法

比如 父類A 中分別實現(xiàn)+load后室、+initialize方法,子類B中不實現(xiàn)+load混狠、+initialize方法
執(zhí)行的順序 [A load] -> [A initialize] -> [A initialize]

類和類別

  • 本類和類別的+load方法存在就實現(xiàn)岸霹,不存在就不實現(xiàn)

  • 類別中的+initialize方法會覆蓋本類的方法,只執(zhí)行一個類別的+initialize方法

安全性

  • load和initialize方法內部使用了鎖将饺,所以都是線程安全的

其他注意點

  1. 在方法中如果使用super,load執(zhí)行的順序和次數(shù)依舊保持不變贡避,但是initialize的執(zhí)行順序和次數(shù)會變動,會調用多次予弧,所以開發(fā)中盡量不要使用super

2.在A刮吧、B、C的其中兩個類的+load方法中去都實現(xiàn)方法的替換操作掖蛤,由于方法置換2次使置換失效杀捻,所以+load中替換等操作加上dispatch_once保持執(zhí)行一次

3.不要去主動去調用load或者initialize方法,會失去他們調用的“唯一性”

4.load方法不會直接觸發(fā)initialize的調用蚓庭,但是不要再+load出現(xiàn)self等類方法的調用致讥,會使initialize的方法提前出現(xiàn),原因是使該類的第一條消息提前發(fā)生

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末器赞,一起剝皮案震驚了整個濱河市垢袱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌港柜,老刑警劉巖请契,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡姚糊,警方通過查閱死者的電腦和手機贿衍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來救恨,“玉大人贸辈,你說我怎么就攤上這事〕Σ郏” “怎么了擎淤?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秸仙。 經常有香客問我嘴拢,道長,這世上最難降的妖魔是什么寂纪? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任席吴,我火速辦了婚禮,結果婚禮上捞蛋,老公的妹妹穿的比我還像新娘孝冒。我一直安慰自己,他們只是感情好拟杉,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布庄涡。 她就那樣靜靜地躺著,像睡著了一般搬设。 火紅的嫁衣襯著肌膚如雪穴店。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天拿穴,我揣著相機與錄音泣洞,去河邊找鬼。 笑死贞言,一個胖子當著我的面吹牛斜棚,可吹牛的內容都是我干的阀蒂。 我是一名探鬼主播该窗,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蚤霞!你這毒婦竟也來了酗失?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤昧绣,失蹤者是張志新(化名)和其女友劉穎规肴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡拖刃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年删壮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兑牡。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡央碟,死狀恐怖,靈堂內的尸體忽然破棺而出均函,到底是詐尸還是另有隱情亿虽,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布苞也,位于F島的核電站洛勉,受9級特大地震影響,放射性物質發(fā)生泄漏如迟。R本人自食惡果不足惜收毫,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望殷勘。 院中可真熱鬧牛哺,春花似錦、人聲如沸劳吠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痒玩。三九已至淳附,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蠢古,已是汗流浹背奴曙。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留草讶,地道東北人洽糟。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像堕战,于是被迫代替她去往敵國和親坤溃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內容