美文网首页
category原理与底层结构

category原理与底层结构

作者: xymspace | 来源:发表于2020-06-14 23:43 被阅读0次
    原理
    • 通过runtime动态将分类的方法合并到类对象,元类对象中。
    底层加载

    查看objc-os.mm文件(查看运行时的文件入口)

    • void objc_init(void) 运行时初始化
    • _read_images() 加载镜像/模块
    • 通过for(EACH_HEADER) 搜索分类
    • 传入cls(类)、meta-cls(元类)到remethodizeClass
    • 调用attachCategories,通过while(i--)循环,遍历所有category,分别合并method、protocol、property到数组中。
    • rw将合并category的数组,通过attachList函数,分别对应传入method、protocol、property
    • attachList 中扩充类的对应属性后,也会重新分配所需内存。
    底层结构
    • 所有分类的结构都一样。

    • 本质上category也是结构体(_category_t),包含:协议、属性等信息。编译完成,仅生成_category_t类型的结构体。

    • 最后加载的分类最先合并到类对象。

    • 分类创建的成员变量,要利用runtime实现set和get,runtime调用get,底层会判断策略和值,返回值。

    相关文章

      网友评论

          本文标题:category原理与底层结构

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