对iOS Runtime的理解

来源:互联网 发布:苹果6s数据流量开关 编辑:程序博客网 时间:2024/06/05 19:30

什么是Runtime?

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

比如:[targetdoSomething];底层运行时会被编译器转化成objc_msgSend(target,@selector(doSomething));

带参数的[target doSomething:arg1...];会被底层运行时会被编译器转化成objc_msgSend(target,@selector(doSomething), arg1, arg2, ...)

以上你可能看不出它的价值,但是我们需要了解的是 Objective-C 是一门动态语言,它会将一些工作放在代码运行时才处理而并非编译时。也就是说,有很多类和成员变量在我们编译的时是不知道的,而在运行时,我们所编写的代码会转换成完整的确定的代码运行。因此,编译器是不够的,我们还需要一个运行时系统(Runtime system)来处理编译后的代码。Runtime 基本是用 C 和汇编写的,由此可见苹果为了动态系统的高效而做出的努力。苹果和 GNU 各自维护一个开源的 Runtime 版本,这两个版本之间都在努力保持一致。点击这里下载苹果维护的开源代码。


0 0
原创粉丝点击