Runtime 运行时

有什么用?

Runtime是属于OC的底层实现,可以进行一些非常底层的操作(用OC很难完成的)。

1、利用Runtime,在程序运行中,可以动态地创建一个类(比如KVO)。

2、利用Runtime,在程序运行中,可以动态地修改一个类的属性 / 方法,添加属性 / 方法。

3、遍历一个类的所有成员变量。


应用场景:

1、归档 / 解档,Runtime获取属性和方法。

2、交换两个方法的实现(OC中的方法由方法编号SEL和方法实现IMP两部分。利用swizzle,可以进行方法交换)。

3、KVO的内部实现原理(响应式编程)。动态创建一个子类 NSKVONotifying_Person,重写set方法,改变 isa指针,指向子类。

4、消息转发机制(a、动态方法解析 +resolveInstanceMethod:方法;b、消息快速转发 -forwardingTargetForSelector:方法;c、完整消息转发 先将方法签名-methodSignatureForSelector:  然后转发 - (void)forwardInvocation:)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。