Runtime

objc_object

objc_class

isa指针


cache_t

  • 用于快速查找方法执行函数
  • 是可增量扩展哈希表结构
  • 局部性原理的最佳应用

class_data_bits_t

  • class_data_bits_t主要是对class_rw_t的封装
  • class_rw_t代表了类的读写信息、对class_ro_t的封装
  • class_ro_t代表了类的只读信息

class_rw_t

class_ro_t

method_t

Type Encodings

总体结构

对象、类对象、元类对象

  • 类对象存储实例方法列表等信息
  • 元类对象存储类方法列表等信息

消息传递

obj_msgSend(xxx)
obj_msgSendSuper(xxx)

缓存查找

例: 给定SEL, 目标是对应bucket_t中的IMP:
cache_key_t 通过f(key)得到bucket_t

  • 对于已排序列表,采用二分算法查找对应执行函数
  • 对于未排序列表,采用一般遍历查找对应执行函数

**父类逐级查找

消息转发

动态方法解析

@dynamic

  • 动态运行时语言将函数决议推迟到运行时
  • 编译时语言在编译期间进行函数决议