美文网首页
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,底层会判断策略和值,返回值。

相关文章

  • iOS分类(category)和类扩展(Extension)

    ~ Category的实现原理?Category编译之后的底层结构是struct category_t (str...

  • iOS中的Category

    一.Category实现原理■ Category编译之后的底层结构是struct category_t ,里面存储...

  • OC底层原理学习笔记(三)- Category

    一、Category的实现原理 1、Category编译之后的底层结构是 struct _category_t ,...

  • Category

    Category的实现原理 Category编译之后的底层结构是struct category_t,里面存储着分类...

  • Category

    1. Category实现原理 Category编译之后的底层结构是struct category_t,里面存储这...

  • Category的实现原理

    Category的实现原理。 Category编译之后的底层结构是struct category_t,里面存储着分...

  • Category

    Category的实现原理:Category编译之后的底层结构是struct category_t,里面存储着分类...

  • iOS Category

    一、Category的实现原理1、Category编译之后的底层结构是struct category_t,里面存储...

  • Category实现的原理二:分类信息如何添加到本类中

    Category实现的原理一:底层结构及源码分析中我们知道了category的底层数据结构,以及从runtime源...

  • category原理与底层结构

    原理 通过runtime动态将分类的方法合并到类对象,元类对象中。 底层加载 查看objc-os.mm文件(查看运...

网友评论

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

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