我们从以下几个方面认识一下runtime:
runtime是什么?
runtime是属于OC的底层,是一套比较底层的纯C语言API,包含了很多底层的c语言API,可以进行一些非常底层的操作。我们平时编写的OC代码中,程序运行过程时,其实最终都是转成了runtime的C语言代码,runtime算是OC的幕后工作中。
[[MJPerson alloc] init] //OC
objc_msgSend(objc_msgSend("MJPerson" , "alloc"), "init")//runtime
runtime可以用来干什么?
1.程序运行过程时,动态创建一个类
2.程序运行时,动态的为每个类添加属性、方法。用于封装框架
3.遍历一个类所有的成员变量、属性、方法。
runtime相关文件和函数
头文件:
<objc/runtime.h>
<objc/message.h>
相关函数:
objc_msgSend : 给对象发送消息
class_copyMethodList : 遍历某个类所有的方法
class_copyIvarList : 遍历某个类所有的成员变量
class_.....
必备知识:
Ivar : 成员变量
Method : 成员方法