宽容他人,放过自己。

runtime

Posted on By anchoriteFili

runtime 运行机制

runtime是一套比较底层的C语言API,属于1个C语言库,包含了很多C语言API. 我们平时编写的OC代码中,程序运行的过程时,其实最终都是转成了runtime的C语言代码, runTime算是OC的幕后工作者。 runtime运行的过程中,可以动态创建一个类(比如KVO的底层),动态为某个类添加属性/方法,修改属性值/方法,

runtime的主要运用方向

  • 遍历一个类的所有成员变量(属性)/所有方法。
  • NSCoding(归档和解档,利用runtime遍历模型对象的所有属性)
  • 字典 ->模型(利用runtime遍历模型对象的所有属性,根据属性名从字典中取出对应的值,设置到模型的属性上)
  • KVO(利用runtime动态产生一个类)
  • 用于封装框架(想怎么改就怎么改)

相关函数

  • objc_msgSend: 给对象发送消息。
  • class_copyMethodList: 遍历某个类所有方法
  • class_copyIvarList: 遍历某个类所有的成员变量
  • class_…

必备常识

  • 1> Ivar : 成员变量
  • 2> Method : 成员方法

从上面的例子中我们看到我们定义的成员变量,如果要是动态创建方法,可以使用Method