美文网首页
iOS +load和+initialize理解

iOS +load和+initialize理解

作者: 科24 | 来源:发表于2018-08-31 16:26 被阅读4次

    +load

    每个类或对应的分类的+load方法,在程序运行的过程中只会被调用一次。

    +load方法的调用顺序

    • 先调用类的+load
      1.按照编译顺序先编译先调用
      2.先调用父类的+load的方法,在调用子类的+load方法

    • 在调用分类的+load
      1.按照编译顺序先编译先调用

    +initialize

    +initialize方法会在类第一次收到消息的时候调用

    +initialize方法的调用顺序

    先调用父类的+initialize方法,在调用子类的+initialize方法,如果分类实现+initialize,就会覆盖类本身的+initialize

    +initialize与+load方法的区别

    1.+initialize是通过方法objc_msgSend方法调用,+load方法直接根据方法地址直接调用。
    2.+initialize如果子类没有实现这个方法,会调用父类的+initialize方法,因此父类的+initialize可能会被调用多次
    3.如果分类实现了+initialize,就会覆盖类中的+initialize

    相关文章

      网友评论

          本文标题:iOS +load和+initialize理解

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