一、什么是runtime(运行时机制)Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和转发。
1.runtime是一套比较底层的纯C语言API, 属于1个C语言库, 包含了很多底层的C语言API。
2.平时编写的OC代码, 在程序运行过程中, 其实最终都是转成了runtime的C语言代码, runtime算是OC的幕后工作者
二、runtime有什么作用:runtime是属于OC的底层, 可以进行一些非常底层的操作(用OC是无法现实的, 不好实现)。
1.在程序运行过程中, 动态创建一个类(比如KVO的底层实现)
2.在程序运行过程中, 动态地为某个类添加属性\方法, 修改属性值\方法
3.遍历一个类的所有成员变量(属性)\所有方法
三、runtime的相关运用
* NSCoding(归档和解档, 利用runtime遍历模型对象的所有属性)
* 字典 --> 模型 (利用runtime遍历模型对象的所有属性, 根据属性名从字典中取出对应的值, 设置到模型的属性上)
* KVO(利用runtime动态产生一个派生类,KVO的实现原理,实际上是重写了这个派生类的某个属性的setter方法,这样就可以,实时监听它的值得变化)。
* 用于封装框架(想怎么改就怎么改)
网友评论