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相关数据结构

你可能感兴趣的:(runtime相关数据结构)