runTime

142 阅读1分钟

1. runTime 方法 class_copyPropertyList

  • 获取类属性列表使用class_copyPropertyList()方法
  • C语言函数,copy之后需要free()

  • 使用字典转模型

  • 获得self的属性列表,遍历字典,如果key 值在数组中,进行KVC赋值,

  • cz_objectProperties方法会调用很多变,需要进行关联缓存处理

  • 从关联对象中获取对象属性,如果有,直接返回

  • 获取之后的数组,objc_setAssociatedObject 添加关联对象

2.方法交换

  • load 方法中交换, 在类被加载到运行时的时候,就会被执行

  • method_exchangeImplementations() 执行之后,交换2个方法

  • 调用setImage:相当于调用cz_setImage:

  • 调用cz_setImage:相当于调用setImage: