美文网首页
Category实现原理

Category实现原理

作者: 无敌大闸蟹 | 来源:发表于2020-05-21 15:34 被阅读0次

    依赖runtime 动态的将分类的方法和类方法合并到类对象和元类对象的方法列表中 (对实例对象 类对象 元类对象和isa要有认识)

    编译阶段
    编译完毕之后 分类 变成_categoty_t结构体 方法暂时是在这个结构体里面 这个结构体里面有方法列表 协议列表等等 这个时候还没有合并到原来的类中去


    源码截的图 转成cpp文件和这个基本一样.png

    runtime阶段
    在runtime调用runtime的初始化函数之后 会把分类的方法插入到原来的方法列表的前面 所以分类和原来的类同一个方法的话会实现分类的 如果两个分类都有的话 看编译顺序 越后编译方法越前


    image.png

    说一下 被问到过的面试题

    category的原理
    category编译之后的底层数据结构是category_t 里面存储着对象方法 类方法 属性 协议信息
    在运行的时候 runtime会将category的数据合并到类对象(或者元类对象)中

    Extension和Category的区别
    类拓展是编译的时候就已经合并到类里面了 分类是运行时的时候合并的

    相关文章

      网友评论

          本文标题:Category实现原理

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