load和initialize

+(void)load +(void)initialize

Apple的文檔很清楚地說明了initialize和load的區(qū)別在于:load是只要類所在文件被引用就會被調用,而initialize是在類或者其子類的第一個方法被調用前調用。所以如果類沒有被引用進項目,就不會有l(wèi)oad調用;但即使類文件被引用進來,但是沒有使用,那么initialize也不會被調用。

它們的相同點在于:方法只會被調用一次。(其實這是相對runtime來說的,后邊會做進一步解釋)。

文檔也明確闡述了方法調用的順序:父類(Superclass)的方法優(yōu)先于子類(Subclass)的方法,類中的方法優(yōu)先于類別(Category)中的方法。

執(zhí)行時機

在程序運行后立即執(zhí)行

在類的方法第一次被調時執(zhí)行

若自身未定義,是否沿用父類的方法? 否 是

類別中的定義 全都執(zhí)行,但后于類中的方法

覆蓋類中的方法,只執(zhí)行一個

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容