初始runtime(运行时机制)

时间:2020-12-10 23:21:47

我们从以下几个方面认识一下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 : 成员方法