runtime是一套比较底层的C语言API,属于1个C语言库,包含了很多C语言API. 我们平时编写的OC代码中,程序运行的过程时,其实最终都是转成了runtime的C语言代码, runTime算是OC的幕后工作者。 runtime运行的过程中,可以动态创建一个类(比如KVO的底层),动态为某个类添加属性/方法,修改属性值/方法,
runtime的主要运用方向
- 遍历一个类的所有成员变量(属性)/所有方法。
- NSCoding(归档和解档,利用runtime遍历模型对象的所有属性)
- 字典 ->模型(利用runtime遍历模型对象的所有属性,根据属性名从字典中取出对应的值,设置到模型的属性上)
- KVO(利用runtime动态产生一个类)
- 用于封装框架(想怎么改就怎么改)
相关函数
- objc_msgSend: 给对象发送消息。
- class_copyMethodList: 遍历某个类所有方法
- class_copyIvarList: 遍历某个类所有的成员变量
- class_…
必备常识
- 1> Ivar : 成员变量
- 2> Method : 成员方法
从上面的例子中我们看到我们定义的成员变量,如果要是动态创建方法,可以使用Method