简介
RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。
对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的函数调用请看这里 )。编译完成之后直接顺序执行,无任何二义性。OC的函数调用成为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数(事实证明,在编 译阶段,OC可以调用任何函数,即使这个函数并未实现,只要申明过就不会报错。而C语言在编译阶段就会报错)。只有在真正运行的时候才会根据函数的名称找 到对应的函数来调用。
基本概念
SEL和IMP都是数据类型
SEL SEL本身是一个整型,编译器会另外生成一张SEL和方法名称对应的表
SEL a = @selector(testMetaClass)
testMetaClass是方法名。
IMP 是一个函数指针
对于名称相同的方法,他们都有相同的SEL,方法的名称不包括类名称,所以子类和父类中的同名方法拥有相同的SEL,但是他们的实现可以各不相同, 因而在他们各自的Dispatch表中SEL所对应的IMP是不同的
建议:
了解了这些基本概念后,需要对runtime有个总体的把握,刚开始不需要太注意细节,主要了解发展史和任务。
总体把控方面,这篇文章写的很好,理解了什么是消息机制就行了,建议读两遍理解!