在iOS开发过程中,使用Runtime的场景虽然没有GCD多,但是也是一个不容忽视的模块,而且在面试找工作的时候也是面试官必考题。那么下面就来了解一下Runtime的相关知识,大牛请绕行,不喜勿喷。
一、Runtime概念
1.Runtime,又叫运行时,是一套关于底层的C语言API,为iOS内部的核心之一,我们在编写OC代码的时候,底层都是基于它来实现的。
Objective-C是一门面向对象的动态语言,它会将一些工作放在代码运行时才处理而并非编译时。也就是说,有很多类和成员变量在编译的时候是不知道的,而在运行时,所编写的代码会转换成完整的确定的代码运行。因此eg:[receiver message];
底层运行时会被编译器转化为:
objc_msgSend(receiver, selector)
如果它还有参数,比如:
[receiver message:(id)arg...];
底层运行时,会被编译器转化为:
objc_msgSend(receiver, selector, arg1, arg2, ...)
2.为什么需要Runtime: