Objective-C類方法 load 和 initialize
阿新 • • 發佈:2017-08-19
object mage cnblogs 什麽 類方法 color ech 引用 https
1、區別:+load 是只要類所在文件被引用就會被調用,而 +initialize 是在類或者其子類的第一個方法被調用前調用。所以如果類沒有被引用進項目,就不會有 +load 調用;但即使類文件被引用進來,如果沒有使用,那麽 +initialize 也不會被調用。
2、相同點:方法只會被調用一次。
3、+load 方法探討
結論 :+load 的執行順序是先父類 再到子類,後 category,而 category 的 +load 執行順序是根據編譯順序決定的。
4、+initialize 方法探討
①. 類和 category 都實現 +initialize 方法,這時候只會執行最後編譯的 category 中的 +initialize 方法
②. 分類 和 子類都實現 +initialize 方法 (屏蔽category的 +initialize ),會優先調用父類方法,跟編譯先後順序無關
總結:1、當 類 和 category 都實現 +initialize 方法,category 的 +initialize 方法 和覆蓋 類的 +initialize方法。
2、只要類中的 A 方法被調用 在此之前 會先調用 父類 +initialize,再調用子類 +initialize,最後調用這個 A 方法。
note:這只是初步探討,以後有什麽發現會繼續添加。
參考:https://tech.meituan.com/DiveIntoCategory.html
Objective-C類方法 load 和 initialize