那什么是OC runtime
简单来说,Objective-C runtime是一个实现Objective-C语言的C库。对象可以用C语言中的结构体表示,而方法(methods)可以用C函数实现。事实上,他们差不多也是这么干了,另外再加上了一些额外的特性。这些结构体和函数被runtime函数封装后,我们就可以在程序运行时创建,检查,修改类,对象和它们的方法。
runtime常用方法
```
//返回一个指向类的成员变量数组的指针
class_copyIvarList()
//返回一个指向类的属性数组的指针
class_copyPropertyList()
注意:根据Apple官方runtime.h文档所示,上面两个方法返回的指针,在使用完毕之后必须free()。
---------------------------------------------------
//获取成员变量名-->C类型的字符串
ivar_getName()
//获取属性名-->C类型的字符串
property_getName()
---------------------------------------------------
typedef struct objc_method *Method;
class_getInstanceMethod()
//以上两个函数传入返回Method类型
class_getClassMethod()
---------------------------------------------------
//交换两个方法的实现
method_exchangeImplementations()
```
runtime用法
1.动态的遍历一个类的所有成员变量,属性,方法,协议等
2、可以利用遍历类的属性,来快速的进行归档操作
3、将从网络上下载的json数据进行字典转模型
3、动态添加 交换方法
4、拦截调用动态添加
5、动态变量控制
6、拓展属性
7、实现KVO