美文网首页
NSObject的类方法load和initialize的比较

NSObject的类方法load和initialize的比较

作者: Traci | 来源:发表于2018-08-29 23:27 被阅读0次

    由Runtime的SwizzleMethods想到的类方法load和initialize方法之间有何不同

    +load方法

    1.+load方法是在main函数之前调用的;
    2.遵从先父类后子类,先本类后列类别的顺序调用;
    3.类,父类与分类之间的调用是互不影响的.子类中不需要调用super方法,也不会调用父类的+load方法实现;
    4.无论该类是否接收消息,都会调用+load方法;
    5.+load只调用一次;


    +initialize方法

    1.+initialize方法是在main函数之后调用的;
    2.+initialize方法遵从懒加载方式,只有在类或它的子类收到第一条消息之前被调用的;
    3.子类中不需要调用super方法,会自动调用父类的方法实现;
    4.+initialize至多只调用一次;

    +load和+initialize对比图

    110844-fc6301e3b08fa26d.png

    备注

    当用swizzleMethod时,还有一种方法
    就是c语言的 __attribute__((constructor)) void function()
    此方法晚于+load,早于main

    感谢骑神,让我又get到一个方法!!

    相关文章

      网友评论

          本文标题:NSObject的类方法load和initialize的比较

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