問題結論1.load方法什麼時候呼叫
2.load方法呼叫原理
3.load方法呼叫順序
4.load方法呼叫次數
+load方法會在runtime載入類,分類時呼叫每個類,分類的+laod方法,在程式執行過程中只呼叫一次。
+load方法是根據方法位址呼叫,並不是objc——msgsend函式呼叫
+load方法是在main函式之前呼叫
呼叫順序
先呼叫類的+load
按照編譯先後順序呼叫(先編譯,先呼叫)
呼叫子類的+load之前會先呼叫父類的+load再呼叫分類的+load
子類的+load方法也是先編譯先呼叫
問題結論:1.initialize方法s什麼時候呼叫
2.initialize方法呼叫原理
3.initialize方法呼叫順序
4.initialize方法呼叫次數
+initialize方法會在類第一次接受訊息時呼叫
+initialize訊息傳送機制(objc_msgsend)
呼叫順序
先呼叫父類的initialize,再呼叫子類的initialize(先初始化分類,再初始化子類,每個類只會初始化一次)
+initialize設+load的很大的區別是,+initialize是通過objc_msgsend進行呼叫的,所以有以下特點:如果子類沒有實現+initialize,會呼叫父類的+initialize(所以父類的+initialize可能會被呼叫多次),如果是分類實現了+initialize,就覆蓋類本身的initialize的呼叫
摘自:
load和initialize的不同
import constants.h implementation constants void initialize void load endload,是載入類的時候,這裡是constants類,就會呼叫。也就是說,ios應用啟動的時候,就會載入所有的類的 void load方法。這樣有個缺點,...
iOS 比較load和initialize方法
ios中,類需要執行初始化操作才能正常使用。繼承於nsobject的類有兩種實現初始化類的方法 load initialize方法。void load 對於加入執行期的類或分類來說,如果該類實現了load方法,必定會呼叫此方法,且只呼叫一次。當包含類或分類的程式載入系統時,會執行該方法,一般都是程式...
load 和 initialize 的區別
1 只要程式啟動就會將所有類的 載入到記憶體中 在 main 函式執行之前 放到 區 無論該類有沒有被使用到都會被呼叫 2 load 方法會在當前類被載入到記憶體的時候呼叫 有且僅會呼叫一次 3 當父類和子類都實現 load 方法時,會先呼叫父類的 load 方法,再呼叫子類的 load方法4 先載...