对象结构分析:
- 对象的 成员变量的值 存放在 实例对象里
- 对象的 成员变量 存放在 类对象里
类对象的内部存储结构
-
class_rw 存放的数据 可读可写
-
其中class_ro 存放的数据编译期生成的 是只读数据 ro --->readonly 不可修改,(cleanMemeory)
-
其中class_rw_ext 存放的可修改的方法列表,属性列表和协议列表 rw-->可读可写(dirty memeory)
对象的类方法为什么存在元类?
- 这是苹果的消息复用的机制
- 放在元类里面遵循单一职责原则,查找方法的本质是快速找到方法并执行,,如果实例方法、类方法放在同一个类对象中,增加了查找难度
- 如果实例方法和类方法重名也是会增加查找判断条件,降低查找效率
消息发送机制 objc_msgSend(消息接收者,方法名)
- 通过消息接收者的isa 找到方法,并执行,如果没找到则msgForward 消息转发