runtime-01

Runtime实现的机制:

运行时机制它是一套C语言库;实际上我们编写的所有OC代码,最终都是转成了runtime库的东西,比如类转成了runtime库里的结构体等数据类型,方法转成了runtime库里面的C语言函数,平时调方法都是转成了objc_msgSend函数(所以说OC有个消息发送机制);因此,可以说runtime是OC的底层实现,是OC的幕后执行者;

举例:

runtime-01_第1张图片

runtime库里面包含了跟类、成员变量、方法相关的API

1,在程序运行过程中,动态创建一个类(比如KVO的底层实现);

2,在程序运行过程中,动态地为某个类添加属性、方法,修改属性值、方法;

3,遍历一个类的所有成员变量(属性)、所有方法

例如:我们需要对一个类的属性进行归档解档的时候属性特别的多,这时候,我们就会写很多对应的代码,但是如果使用了runtime就可以动态设置。

runtime-01_第2张图片

runtime-01_第3张图片

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(....)

你可能感兴趣的:(ios,技术,博客,Runtime,ios开发)