Runtime知识梳理

数据结构

1. objc_object

OC中平时使用的所有的对象(id类型),在Runtime中对应为objc_object的结构体。

objc_object结构体:

  • isa_t
  • 关于isa操作相关
  • 弱引用相关
  • 关联对象相关
  • 内存管理相关

2. objc_class

OC中所使用的类(Class),在Runtime中对应为objc_class。继承自objc_object。
Class也是一个对象,称之为类对象。

objc_class结构体:

  • Class superClass;指向父类的指针
  • cache_t cache;方法缓存,进行消息传递过程中会使用到
  • class_data_bits_t bits;类所定义的协议、属性以及方法

3. isa指针

  • 指针型isa:isa的值代表Class的地址。
  • 非指针型isa:isa的值得部分代表Class的地址。

在使用指针寻址过程中,例如在64位设备上,也许30、40位就能保证寻找到所有Class的地址,那么非指针型isa可以存储一些其他内容以达到节省内存的目的。

isa指向

  • 关于对象,其指向类对象。
  • 关于类对象,其指向元类对象。
  • 所有元类对象的isa指针都指向根元类对象,包括根元类对象自己。

isa

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享