Objective-C Runtime vs.编译时的区别

Objective-C中的 Runtime 和编译时有着不同的工作方式。

编译时

Objective-C的编译过程和其他语言类似:

  • Preprocessor处理:展开宏、导入头文件等
  • 语法解析:检查语法,生成抽象语法树
  • 代码生成:生成目标平台的机器码

编译时会进行静态类型检查、符号绑定等工作。

Runtime

Objective-C的Runtime即运行时,是语言动态化的关键。其主要工作有:

  • 消息转发 – 动态找到消息的响应者
  • 动态方法解析 – 允许完全动态添加方法
  • 动态加载类 – 可以在运行时动态加载类
  • 类信息查询 – 可以查询类、方法、属性等信息

这使得Objective-C具有极大的灵活性。

区别

编译时进行早期 binding,Runtime Allows 动态操作。编译时优化性能,Runtime 提高灵活性。

合理利用编译时和Runtime各自的优势,可以发挥Objective-C的最大威力。