load 方法會在載入類的時候就被調用,也就是 ios 應用啟動的時候,就會載入所有的類,就會調用每個類的 + load 方法。 在沒有對類做任何操作的情況下,+load 方法會被預設執行,並且是在 main 函數之前執行的。程式啟動之前會調用 ...
initialize不是init
initialize在這個類第一次被調用的時候比如[[class alloc]init]會調用一次initialize方法,不管創建多少次這個類,都只會調用一次這個方法,我們用它來初始化靜態變數,而init方法是只要這個類被調用,就會調用這個init方法,這個類被調用幾次,這個init方法就會被調用幾次,當有一個類繼承這個類,是這個類的子類的時候,當子類被調用的時候比如子類被[[class alloc]init]的時候,父類的initialize和init方法都會被調用一次,
init繼承於NSObject這個根類,所有的子類可以不用重寫這個實例方法函數,當然也可以在自己的類里重寫init實例方法。
1 - (id) init
2 {
3 if ( self = [super init] )
4 {
5 // Class-specific initializations
6 }
7 return self;
8 }
首先得調用父類的init函數方法,然後在if的語句塊里寫一些自己特色的初始化操作(第5行)。
可以在你實例化的時候提供更多參數以便實現對對象的快速賦值。重寫init可以讓你創建的對象出來就是成品。而不重寫的話,還需要你對該對象的屬性進行賦值。
- load 方法會在載入類的時候就被調用,也就是 ios 應用啟動的時候,就會載入所有的類,就會調用每個類的 + load 方法。
- 在沒有對類做任何操作的情況下,+load 方法會被預設執行,並且是在 main 函數之前執行的。程式啟動之前會調用