美文网首页
load和initialize

load和initialize

作者: 无敌大闸蟹 | 来源:发表于2020-05-22 09:40 被阅读0次

    下面是调用load的源码
    调用时刻 runtime加载类、分类的时候 就会调用+(void)load方法
    重点:load方法不是通过消息发送机制调用的!!!!
    category也可以实现+load方法 并且都会执行
    先调用类的load方法 再调用分类的load
    父类的load会比子类的先走
    整体调用顺序是 父类load - 子类load - 父类分类load - 子类分类load

    image.png
    image.png
    image.png
    image.png

    initialize在 这个类第一次接收到消息调用 调用方式是通过消息发送机制调用的 但是和消息发送不同的是 调用initialize之前会调用父类的initialize (如果父类没有走过initialize方法 走过了就不会调用了 )
    如果子类没有实现initialize 会调用父类的initialize
    比如 B和C都是A的子类 并且只有A实现了initialize方法 调用[B alloc];[C alloc]的话
    B alloc会先调用父类A的initialize方法 然后调用B的initialize方法 但是B没有实现initialize 所有就会调用父类的initialize 也就是A的initialize
    C alloc和B的逻辑一样 只不过A已经调用过initialize 所以只会调用C的initialize 但是C没实现 所有调用A的initialize
    所以A的initialize方法会走三次

    相关文章

      网友评论

          本文标题:load和initialize

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