什么是runtime?
- 实际上我们编写的所有OC代码,最终都是转成了runtime库的东西,比如类转成了runtime库里面的结构体等数据类型,方法转成了runtime库里面的C语言函数,平时调方法都是转成了objc_msgSend函数(所以说OC有个消息发送机制)
- 因此,可以说runtime是OC的底层实现,是OC的幕后执行者runtime有啥用?
- 能动态产生一个类、一个成员变量、一个方法
- 能动态修改一个类、一个成员变量、一个方法
- 能动态删除一个类、一个成员变量、一个方法
-常见的函数、头文件
#import: 成员变量、类、方法
class_copyIvarList : 获得某个类内部的所有成员变量
class_copyMethodList : 获得某个类内部的所有方法
class_getInstanceMethod : 获得某个具体的实例方法(对象方法,减号开头)
class_getClassMethod : 获得某个具体的类方法 (加号)
method_exchangeImplementations : 交换2个方法的实现#import消息机制
objc_msgSend(...);