runtime相关数据结构

Runtime相关的基础数据结构

相关的基础数据结构有:

  • objc_object
  • objc_class
  • isa指针
  • mathod_t
  • ……
objc_object
objc_object

在OC中所有对象都是id类型,对应runtime中的objc_object结构体,这个结构体主要包括:

  • isa_t (共用体)
  • 关于isa操作相关(如:根据isa指针获取对象的类对象)
  • 弱引用相关 (如:标记一个对象它是否曾经有过弱引用指针)
  • 关联对象相关
  • 内存管理相关
objc_class
objc_class

在OC中所使用的Class对应runtime中的objc_class,objc_class继承于objc_class. objc_class包含:

  • Class superClass (指向父类class)
  • cache_t (方法缓存的结构)
  • class_data_bits_t (关于类的变量属性方法都在bits数据结构中)
isa_t

共用体isa_t
isa指针分为指针型isa非指针型isa,其中指针型isa的值代表Class的地址,而非指针型isa的值的部分代表Class的地址
isa的指向

  • 关于对象,其指向类对象
  • 关于类对象,其指向元类对象
cache_t
  • 用于快速查找方法执行函数
  • 是可增量扩展的哈希表结构
  • 局部性原理的最佳应用
    cache_t可以理解为是有若干个bucket_t组成的,而每一个bucket_t由两个成员变量组成:keyIMP,key:selector,IMP:无类型的函数指针
class_data_bits_t
  • class_data_bits_t主要是对class_rw_t的封装
  • class_rw_t代表关于类读写信息、对class_ro_t(ro->readonly)的封装
  • class_ro_t代表相关只读信息


    class_rw_t

    class_ro_t
mathod_t

结构体struct method_t 包含:

  • SEL:name (函数名)
  • const char * types (表示函数的返回值和参数)
  • IMP imp (函数体)

const char * types

返回值 参数1 参数2 …… 参数n

总结

runtime相关数据结构
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容