Objective-C中的load initialize方法

看了好多文章覺得總結的不是我想要的,斗膽再總結一下

load

1、類被系統添加到runtime之前調用;

2、調用順序:父類先于子類,子類先于category(category里的實現不會覆蓋原類實現);

initialize

1、向類發送第一個消息之前調用(系統runtime自動調用的load不算);

2、會先調用父類的實現,再調用子類的實現,如果子類沒有實現,還是調用繼承自父類的。可以看出,父類的實現可能被多次調用。

3、系統對每個類只會發送一次消息(調用);

4、如果category中實現了initialize方法,會覆蓋原先類中已經有的實現(如果有的話。沒有就充當該類的實現);


load 、initialize相同點

1、自定義實現中都不需要顯示調用父類的實現;

2、在不考慮開發者主動使用的情況下,系統最多會調用一次;

3、父類先于子類調用;


應用:

load中可以做method swizzling;

initialize可以初始化全局變量;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容