Runtime是Objective-C语言动态化的关键技术,可以实现很多高级功能。
Runtime简介
Objective-C Runtime提供了一系列API,可以实现:
- 动态创建类和对象
- 访问和修改类、方法、属性
- 动态添加方法
- 交换方法实现
- 动态解析调用等
使用Runtime
主要的Runtime API有:
- class_getName:获取类名
- class_getSuperclass:获取父类
- class_copyMethodList:获取方法列表
- class_addMethod:动态添加方法
- method_setImplementation:交换方法实现
使用示例:
id cls = NSClassFromString(@"Person"); // 获取类对象
id obj = [[cls alloc] init]; // 创建实例
class_addMethod(cls, @selector(newMethod), method_getImplementation(method), "v@:"); // 添加新方法
method_setImplementation(method, newImpl); // 交换实现
实际应用
- 注入调试日志
- 方法拦截
- 方法替换
- 动态设置属性
等等
掌握Runtime开启了Objective-C强大的动态特性,可以实现很多高级功能。