load 和 initialize 的區別

2021-08-17 02:43:27 字數 972 閱讀 1081

1、只要程式啟動就會將所有類的**載入到記憶體中(在

main

函式執行之前)

, 放到**區

(無論該類有沒有被使用到都會被呼叫

)  2

、load

方法會在當前類被載入到記憶體的時候呼叫

, 有且僅會呼叫一次

3、當父類和子類都實現

load

方法時, 

會先呼叫父類的

load

方法, 

再呼叫子類的

load方法4

、先載入原始類,再載入分類的

load方法5

、當子類未實現

load

方法時,不會呼叫父類的

load方法6

、多個類都實現

load

方法,load

方法的呼叫順序,與

compile sources

中出現的順序一致

1、當類第一次被使用的時候就會呼叫

(建立類物件的時候)2

、initialize

方法在整個程式的執行過程中只會被呼叫一次

, 無論你使用多少次這個類都只會呼叫一次3、

initialize

用於對某乙個類進行一次性的初始化

4、先呼叫父類的

initialize

再呼叫子類的

initialize 

5、當子類未實現

initialize

方法時,會把父類的實現繼承過來呼叫一遍,再次之前父類的initialize方法會被優先呼叫一次

6、當有多個

category

都實現了

initialize

方法,會覆蓋類中的方法,只執行乙個

(會執行

compile sources 

列表中最後乙個

category 

的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方法

void initialize訊息是在該類接收到其第乙個訊息之前呼叫。關於這裡的第乙個訊息需要特別說明一下,對於nsobject的runtime機制而言,其在呼叫nsobject的 void load訊息不被視為第乙個訊息,但是,如果像普通函式呼叫一樣直接呼叫nsobject的 void load訊...