Runtime在iOS开发中作为内部核心之一,需要花更多时间去理解。
1.Runtime
Runtime又叫运行时,是一套底层的C语言API,无论是oc还是swift,底层都是基于这个来实现的,比如发送消息:
[receiver message]
底层运行时会被编译器转化为:objc_msgSend(receiver, selector)
如果还添加其他参数:[receiver message:(id)arg...]
底层运行时会被编译器转化为:objc_msgSend(receiver, selector, arg1, arg2, ...)
有很多的类和成员变量在我们编译的时候是不知道的也是无法确定的,而在运行时,我们所编写的代码会转换成完整的确定的代码运行,因此,只有编译器是不够的,我们还需要一个运行时系统来处理编译后的代码。也是因为这样,runtime给oc语言带来了动态语言的特性,也为c语言带来了面向对象的特性。
2.