+(void)load +(void)initialize
Apple的文檔很清楚地說明了initialize和load的區(qū)別在于:load是只要類所在文件被引用就會被調(diào)用,而initialize是在類或者其子類的第一個方法被調(diào)用前調(diào)用恼除。所以如果類沒有被引用進項目踪旷,就不會有l(wèi)oad調(diào)用;但即使類文件被引用進來,但是沒有使用令野,那么initialize也不會被調(diào)用舀患。
它們的相同點在于:方法只會被調(diào)用一次。(其實這是相對runtime來說的气破,后邊會做進一步解釋)构舟。
文檔也明確闡述了方法調(diào)用的順序:父類(Superclass)的方法優(yōu)先于子類(Subclass)的方法,類中的方法優(yōu)先于類別(Category)中的方法堵幽。
執(zhí)行時機
在程序運行后立即執(zhí)行
在類的方法第一次被調(diào)時執(zhí)行
若自身未定義狗超,是否沿用父類的方法? 否 是
類別中的定義 全都執(zhí)行朴下,但后于類中的方法
覆蓋類中的方法努咐,只執(zhí)行一個