Runtime实现的机制:
运行时机制它是一套C语言库;实际上我们编写的所有OC代码,最终都是转成了runtime库的东西,比如类转成了runtime库里的结构体等数据类型,方法转成了runtime库里面的C语言函数,平时调方法都是转成了objc_msgSend函数(所以说OC有个消息发送机制);因此,可以说runtime是OC的底层实现,是OC的幕后执行者;
举例:
runtime库里面包含了跟类、成员变量、方法相关的API
1,在程序运行过程中,动态创建一个类(比如KVO的底层实现);
2,在程序运行过程中,动态地为某个类添加属性、方法,修改属性值、方法;
3,遍历一个类的所有成员变量(属性)、所有方法
例如:我们需要对一个类的属性进行归档解档的时候属性特别的多,这时候,我们就会写很多对应的代码,但是如果使用了runtime就可以动态设置。
Runtime机制需要了解的:
常见的头文件、函数
#import<objc/runtime.h> :成员变量、类、方法
1,Ivar *class_copyIvarList : 获得某个类内部的所有成员变量
2,Method *class_copyMethodList : 获得某个类内部的所有方法
3,Method class_getInstanceMethod : 获得某个实例方法(对象方法,减号-开头)
4,Method class_getClassMethod : 获得某个类方法(加号+开头)
5,method_exchangeImplementations : 交换2个方法的具体实现
#import <objc/message.h> : 消息机制
1,objc_msgSend(....)