OC消息传递机制与消息转发机制

oc运行机制是动态的,运行时所执行的代码是由运行环境来决定的,静态的机制是由编译器来决定的,(编译期是指把你的源程序交给编译器编译的过程,最终目的是得到可执行的文件。运行期指的是你将可执行文件交给操作系统(输入文件名,回车)执行、直到程序执行结束的期间,执行的目的是为了实现程序的功能。)

oc是动态绑定,调用编译阶段并不会去绑定执行的函数,只有在运行的时候才回去对象中查找方法,接受方法的类中有个方法列表,如果能找到方法就调用,找不到的话就回去父类中查找

C语言是静态绑定,在编译的阶段就能决定所要调用的函数


消息转发机制

当一个对象无法处理时间的时候会进入消息转发流程,可以通过运行时机制,将我们需要的某个方法加入到类中,这就是运行时添加属性的原理

分类不能直接添加属性是因为分类中没有实现set和get方法,即使手写实现也不能调用,如果加入属性就会崩溃,因为调用的时候找不到set和get方法,这样会进入消息转发机制,此时就可以利用运行时机制,当进入消息转发机制后,利用运行时机制为其生成set和get方法,进而添加属性.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容