2. Runtime

2018-07-25  本文已影响0人  海盗军长

1. Runtime是什么

runtime 又叫运行时,它是一套底层的 C 语言 API, 其为 iOS 内部的核心之一,我们平时写的 OC 代码,底层都是基于它来实现。

比如

[receiver message];

底层运行时会被编译器转译为

objc_msgSend(receiver, selector)

如果有参数

[receiver message:(id)arg];
objc_msgSend(receiver, selector, arg1, arg2, ...)

2.为什么需要Runtime

3.Runtime 的作用

OC 在三种层面上与 runtime 系统进行交互

  1. 通过 Objective-C 源码
    只要编写 OC 代码,Runtime 系统就会自动在幕后搞定一切,调用方法,编译器会将 OC 代码转换成运行时代码,在运行时确定数据结构和函数。

  2. 通过 Foundation 框架的 NSObject 类定义的方法
    一些 NSObject 方法可以从 runtime 系统获取信息,允许对象进行自我检查,
    比如:

      - (void)class; //返回对象的类
      - (BOOL)isKindOfClass // 是否是其子类或者父类
     - (BOOL)isMemberOfClass //是否当前类的成员变量
     - (BOOL)responseToSelector:(id)SEL //检查对象能否响应指定的消息
  1. 通过对 rumtime 库函数的直接调用
    objc/Runtime.h
上一篇 下一篇

猜你喜欢

热点阅读