美文网首页
load和initialize

load和initialize

作者: 负一一 | 来源:发表于2016-03-18 12:51 被阅读0次

+(void)load +(void)initialize

Apple的文档很清楚地说明了initialize和load的区别在于:load是只要类所在文件被引用就会被调用,而initialize是在类或者其子类的第一个方法被调用前调用。所以如果类没有被引用进项目,就不会有load调用;但即使类文件被引用进来,但是没有使用,那么initialize也不会被调用。

它们的相同点在于:方法只会被调用一次。(其实这是相对runtime来说的,后边会做进一步解释)。

文档也明确阐述了方法调用的顺序:父类(Superclass)的方法优先于子类(Subclass)的方法,类中的方法优先于类别(Category)中的方法。

执行时机

在程序运行后立即执行

在类的方法第一次被调时执行

若自身未定义,是否沿用父类的方法? 否 是

类别中的定义 全都执行,但后于类中的方法

覆盖类中的方法,只执行一个

相关文章

网友评论

      本文标题:load和initialize

      本文链接:https://www.haomeiwen.com/subject/gnaclttx.html