iOS 的initialize和load方法

2021-10-20 15:55:54 字數 817 閱讀 4156

+initialize和+load這兩個方法在類使用時會自動呼叫。但是兩個方法的不同點會導致應用層面上效能的顯著差異。

1.+initialize方法:

這個方法會在第一次初始化這個類之前被呼叫,我們一般用來初始化靜態變數。

+ initialize方法類似乙個懶載入,如果沒有使用這個類,那麼系統預設不會去呼叫這個方法,且預設只載入一次;

+ initialize方法的呼叫看起來會更合理,通常在它裡面寫**比在+ load裡寫更好。+ initialize很有趣,因為它是懶呼叫的,也有可能完全不被呼叫。類第一次被載入時+ initialize不會被呼叫。類接收訊息時,執行時會先檢查+ initialize有沒有被呼叫過。如果沒有,會在訊息被處理前呼叫。

2.+load方法會在載入類的時候就被呼叫,也就是ios應用啟動的時候,就會載入所有的類,就會呼叫每個類的+load方法。

+load 方法會被預設執行,並且是在 main 函式之前執行的。並沒有對類做出任何操作的情況下呼叫。

+ load方法,當類被載入時它會自動被呼叫。這個呼叫非常早。如果你實現了乙個應用或框架的+ load,並且你的應用鏈結到這個框架上了,那麼+ load會在 main() 函式之前被呼叫。如果你在乙個可載入的 bundle 中實現了+ load,那麼它會在 bundle 載入的過程中被呼叫。

iOS 比較load和initialize方法

ios中,類需要執行初始化操作才能正常使用。繼承於nsobject的類有兩種實現初始化類的方法 load initialize方法。void load 對於加入執行期的類或分類來說,如果該類實現了load方法,必定會呼叫此方法,且只呼叫一次。當包含類或分類的程式載入系統時,會執行該方法,一般都是程式...

iOS中init和initialize的特點

在nsobject.h中有兩個類方法 void load void initalize initialize和load,我們並不需要在這兩個方法的實現中使用super呼叫父類的方法。load不像普通方法一樣遵守繼承規則,當自己的類沒有實現load方法時,不管超類是否實現,自己都不會載入load方法,...

load和initialize的不同

import constants.h implementation constants void initialize void load endload,是載入類的時候,這裡是constants類,就會呼叫。也就是說,ios應用啟動的時候,就會載入所有的類的 void load方法。這樣有個缺點,...