iOS runtime 详解

一、runtime 简介

OC是一门动态语言,所以它总想办法把一些决定工作从编译推迟到运行时。也就是说只有编译器是不够的,它还需要一个运行时系统来执行编译后的代码。这就是Runtime系统存在的意义,它是整个OC的一个基石。

Runtime基本是用C和汇编语言写的,可见苹果为动态系统的高效做出的努力。

Runtime库主要做下面几件事:

封装:在这个库中,对象可以用C语言中的结构体表示,而方法可以用C函数来实现,另外再加上了一些额外的特性。这些结构体和函数被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、动态添加方法
 
  
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/huadeng/p/10931182.html