1>是什么:
1.是一套纯C语言的API,属于一个C语言的库,包含了很多底层的C语言的API
2.平时编写的OC代码,在运行过程中,其实最终都是转换成了runtime的C语言代码,runtime算是OC的幕后工作者
3.举例
//runtime实现机制
//OC
[[XZYPerson alloc]init];
//C语言
objc_msgSend(objc_msgSend("XZYPerson",@"alooc"),@"init");
2>用法:
1.runtime是OC的底层,可以进行一些非常底层的操作(用OC是无法实现的,不好实现)
*在程序运行过程中动态生成的类(比如KVO的底层实现)
*在程序运行过程中动态的为某个类添加属性\方法修改属性值\方法(重写对象的setter方法)
*可以遍历一个类的所有成员变量(属性)\所有方法
3.相关的头文件和方法
1.头文件
<objc/runtime.h>
<objc/message.h>
2.相关应用
*NSCoding(归档和解档)
*字典转模型(利用runtime遍历模型对象的所有属性,很据属性名称从字典取出对应的值,设置到模型的属性上)
*KVO(利用runtime动态产生一个类)
*用于封装框架
3.相关函数
*objc_msgSend: 给对象发送消息
*class_copyMethodList: 遍历某个类的所有的方法
#class_copyIvarList: 遍历某个类所有的成员变量 该方法等同于class_copyPropertyList,返回的都是一个类的所有成员变量数组,但是class_copyIvarList返回的是一个指针数组 用Ivar的对象接收,而class_copyPropertyList返回的C语言的数组,用objc_property_t的对象接收
*class_...
4>必备常识
1.Ivar: 成员变量
2.Method: 成员方法