一、runtime 简介
OC是一门动态语言,所以它总想办法把一些决定工作从编译推迟到运行时。也就是说只有编译器是不够的,它还需要一个运行时系统来执行编译后的代码。这就是Runtime系统存在的意义,它是整个OC的一个基石。
Runtime基本是用C和汇编语言写的,可见苹果为动态系统的高效做出的努力。
Runtime库主要做下面几件事:
封装:在这个库中,对象可以用C语言中的结构体表示,而方法可以用C函数来实现,另外再加上了一些额外的特性。这些结构体和函数被runtime函数封装后,我们就可以在程序运行时创建,检查,修改类、对象和它们的方法了。
找出方法的最终执行代码:当程序执行[object doSomething]时,会向消息接收者(object)发送一条消息(doSomething),runtime会根据消息接收者是否能响应该消息而做出不同的反应。这将在后面详细介绍。
找出方法的最终执行代码:当程序执行[object doSomething]时,会向消息接收者(object)发送一条消息(doSomething),runtime会根据消息接收者是否能响应该消息而做出不同的反应。这将在后面详细介绍。
二、runtime相关概念
头文件 <objc/runtime> <objc/message>(包含了runtime)
Method :成员方法
Ivar : 成员变量
三、runtime使用
利用runtime进行时,在程序运行的过程中,动态创建一个类
利用runtime进行时,在程序运行的过程中,动态修改一个类的属性/方法
利用runtime进行时,遍历一个类的所有属性和方法
四、runtime使用场景
1、给类别添加属性
2、方法交换
3、OC序列化(归档)
4、KVO 动态创建类
5、动态添加方法