對于加入運行期系統(tǒng)中的每個類(class)及分類(category)來說,必定會調(diào)用此方法,而且僅調(diào)用一次。通常在應(yīng)用程序啟動的時候,就會執(zhí)行此方法。如果分類和其所屬的類都定義了load方法,則先調(diào)用類里面的,再調(diào)用分類里面的。
- (void)initialize
對于每個類來說,該方法會在程序首次用該類之前調(diào)用,且只調(diào)用一次。它是由運行期系統(tǒng)來調(diào)用的,絕不應(yīng)該通過代碼直接調(diào)用。
首先,它是“惰性調(diào)用的”,也就是說,只有當(dāng)程序用到了相關(guān)的類時,才會調(diào)用。因此,如果某個類一直都沒有使用,那么initialize方法就一直不會運行。這就等于說,應(yīng)用程序無須先把每個類的initialize都執(zhí)行一遍,這與load方法不同。對于load來說,應(yīng)用程序必須阻塞并等著所有類的load都執(zhí)行完畢,才能繼續(xù)。
要點
在加載階段,如果類實現(xiàn)了load方法,那么系統(tǒng)就會調(diào)用它。分類里面也可以定義此方法,類的load方法要比分類中的先調(diào)用。與其他方法不同,load方法不參與覆寫機制。
首次使用某個類之前,系統(tǒng)會向其發(fā)送initialize消息。由于此方法遵從普通的覆寫規(guī)則,所以通常應(yīng)該在里面判斷當(dāng)前初始化的是哪個類。
無法再編譯期設(shè)定的全局常量,可以放在initialize方法里初始化。