04-类对象结构解析

160 阅读1分钟

对象结构分析:

image.png

  • 对象的 成员变量的值 存放在 实例对象里
  • 对象的 成员变量 存放在 类对象里

类对象的内部存储结构

image.png

  • class_rw 存放的数据 可读可写

  • 其中class_ro 存放的数据编译期生成的 是只读数据 ro --->readonly 不可修改,(cleanMemeory)

  • 其中class_rw_ext 存放的可修改的方法列表,属性列表和协议列表 rw-->可读可写(dirty memeory)

image.png

image.png

image.png

对象的类方法为什么存在元类?

  • 这是苹果的消息复用的机制
  • 放在元类里面遵循单一职责原则,查找方法的本质是快速找到方法并执行,,如果实例方法、类方法放在同一个类对象中,增加了查找难度
  • 如果实例方法和类方法重名也是会增加查找判断条件,降低查找效率 image.png

消息发送机制 objc_msgSend(消息接收者,方法名)

  • 通过消息接收者的isa 找到方法,并执行,如果没找到则msgForward 消息转发