NSObject Class Reference里对这两个方法说明:
1 | +(void)initialize |
文档中说明了initialize
和load
的区别在于:load
是只要类所在文件被引用就会被调用,而initialize
是在类或者其子类的第一个方法被调用前调用(懒加载)。所以如果类没有被引用进项目,就不会有load
调用;但即使类文件被引用进来,但是没有使用,那么initialize
也不会被调用。
它们的相同点在于:方法只会被调用一次。(相对runtime
)。
文档也明确阐述了方法调用的顺序:父类(Superclass
)的方法优先于子类(Subclass
)的方法,类中的方法优先于类别(Category
)中的方法。