美文网首页
Category 的原理

Category 的原理

作者: 东方诗空 | 来源:发表于2022-03-22 15:25 被阅读0次

    疑问?
    Category中有load方法吗?load方法是什么时候调用的?load 方法能继承吗?
    load、initialize方法的区别什么?它们在category中的调用的顺序?以及出现继承时他们之间的调用过程?
    Category能否添加成员变量?如果可以,如何给Category添加成员变量?

    Category的底层结构

    定义在objc-runtime-new.h中


    image.png

    Category的加载处理过程

    • 通过Runtime加载某个类的所有Category数据

    • 把所有Category的方法、属性、协议数据,合并到一个大数组中
      后面参与编译的Category数据,会在数组的前面

    • 将合并后的分类数据(方法、属性、协议),插入到类原来数据的前面

    源码解读顺序

    objc-os.mm

    _objc_init
    map_images
    map_images_nolock
    

    objc-runtime-new.mm

    _read_images
    remethodizeClass
    attachCategories
    attachLists
    realloc、memmove、 memcpy
    

    回答疑问:

    • Category中有load方法吗?load方法是什么时候调用的?load 方法能继承吗?
      有load方法
      load方法在runtime加载类、分类的时候调用
      load方法可以继承,但是一般情况下不会主动去调用load方法,都是让系统自动调用

    • load、initialize方法的区别什么?它们在category中的调用的顺序?以及出现继承时他们之间的调用过程?

    • Category能否添加成员变量?如果可以,如何给Category添加成员变量?
      不能直接给Category添加成员变量,但是可以间接实现Category有成员变量的效果

    相关文章

      网友评论

          本文标题:Category 的原理

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