美文网首页
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