Objective-C 中的Runtime使用介绍

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强大的动态特性,可以实现很多高级功能。