概念:
1,oc 是基于c 为c添加了面向对象的特性,他将很多静态语言在编译和链接时期做的事放到了runtime里面运行来处理,runtime就是oc的幕后工作人员
2,Runtime 就是运行时 是c和汇编的Api,而oc是运行机制,也就是在运行时候的一些机制,其中主要是消息机制
3,对于c而言,函数的调用在编译的时候会决定调用哪个函数
4,oc的函数调用是成为消息发送,属于动态调用过程,在编译的时候并不能真正决定调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用
5,事实证明,在编译阶段,oc可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错,只有当运行的时候才会报错,这是因为oc是运行时
动态调用,而c语言调用未实现的函数就会报错
runtime的消息机制
Oc在运行的时候也是转换runtime方法运行的,任何方法调用本质:就是发送一个消息(用runtime发送消息,oc底层实现是通过runtime实现
消息机制原理:对象根据方法编号SEL去映射表查找对应的方法实现
每一个oc的方法,底层必然有一个与之对应的runtime方法
OC当中任何一个类都是用objc_class这样一个结构体来描述的。