美文网首页
2. Runtime

2. Runtime

作者: 海盗军长 | 来源:发表于2018-07-25 19:14 被阅读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

  • Objective-C 是一门动态语言,它会将一些工作放在代码运行时才处理而并非编译时。也就是说,有很多类和成员变量在我们编译的时是不知道的,而在运行时,我们所编写的代码会转换成完整的确定的代码运行。
  • 因此,编译器是不够的,我们还需要一个运行时系统(Runtime system)来处理编译后的代码。
  • Runtime 基本是用 C 和汇编写的,由此可见苹果为了动态系统的高效而做出的努力。苹果和 GNU 各自维护一个开源的 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

相关文章

  • 2. Runtime

    1. Runtime是什么 runtime 又叫运行时,它是一套底层的 C 语言 API, 其为 iOS 内部的核...

  • 2. runloop、runtime

    1. Runloop RunLoop 的本质是什么?就是一个 while循环,可以一直保活;内核态 => 用户态;...

  • iOS-Runtime

    RunTime简介1.runtime是 OC 的底层实现, runtime API 都是纯 c 代码.2.所有类中...

  • Objective-C Runtime 运行时之一: 类与对象及

    目录: 1. 什么是Runtime? 2. 与 Runtime 系统进行交互 3. Runtime 类与对象 1...

  • kubebuild背后原理分析

    1. Controller-runtime结构介绍[#1-controller-runtime----] 2. C...

  • Runtime的总结(第一篇)

    Objc/runtime 是C 的API 1.利用Runtime在程序运行的时候动态创建类 2.利用Runtime...

  • runtime自学日记

    1.runtime 是什么 runtime 就是运行时。 2.为什么要有runtime 根据OC的特性“消息发送机...

  • 2. Runtime交换方法

    目标:每次UIImage加载图片, 打印是否加载成功, 并且在使用时不需要添加任何代码. 方法: 交换类方法 新建...

  • 使用Process执行外部命令

    1. Runtime 使用Runtime方法执行外部命令 2. ProcessBuilder 也是使用Proces...

  • runtime的用法

    1.使用runtime改变变量值 2.使用runtime交换方法 3.使用runtime添加方法 4.使用runt...

网友评论

      本文标题:2. Runtime

      本文链接:https://www.haomeiwen.com/subject/libfmftx.html