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