美文网首页Runtime
OC中消息发送机制

OC中消息发送机制

作者: xukunluren | 来源:发表于2017-03-17 16:25 被阅读0次

OC是C的超集,所以理解OC中的消息通讯机制,首先最好理解C语言中的函数调用方式。C语言使用“静态绑定”,也就是说在编译期间就能决定运行时所应调用的函数。

在OC中,如果想某个对象传递消息,使用的是动态绑定的机制来决定需要调用的方法,在底层,所有的方法都是普通的C语言去实现,然而接收到消息之后,究竟该调用哪个方法则完全取决于运行期决定,甚至可以在程序运行时改变,这些特性使的OC成为一门真正的动态语言。

Id returnValue = [someObject messageName:parameter];

编译器会将上述语句转成C语言的函数进行编译:

Id returnValue =objc_msgSend (someObject,@selector(messageName:),parameter );

objc_msgSend函数会依据接收者与选择子的类型来调用适当的方法。其原理如下:

该方法需要在接收者所属的类中搜索其“方法列表”,如果能找到与之相符的方法,就跳至其实现代码。

若是上一步没有找到相符的方法,就沿着继承体向上查找,等找到合适的方法之后再跳转。如果还是找不到对应的方法就执行“消息转发”操作。

objc_msgSend函数会将查找到的方法缓存在“快速映射表”总,每个类都有这样的一块缓存,若是之后还会有相对于的选择字需要执行,那样方法的执行速度就会很快了。

相关文章

  • OC中如何避开消息机制

    OC中的消息机制可概括为三步: 消息发送。 动态解析。 消息转发。 由于消息机制objc_msgSend()方法调...

  • 关于runtime的一些简单理解

    1.消息发送OC:运行时机制,消息机制是运行时机制最重要的机制消息机制:任何方法调用,本质都是发送消息 SEL:方...

  • runtime 消息机制简析

    runtime 消息机制消息机制可以简单分为三个方面:消息发送、动态方法解析、消息转发一.消息发送oc 中所有的方...

  • runtime的实用性讲解

    runtime 概念 runtime 运行时机制,主要是消息机制。OC 中的方法调用属于消息的发送,动态调用过程,...

  • iOS开发 — 初识消息机制

    消息机制原理 iOS进程是一个活的循环(runtime), OC中调用方法的实质就是发送消息, 而消息机制的本质就...

  • 消息发送机制和运行时

    消息发送机制定义 OC的函数调用称为消息发送。OC的消息发送属于动态调用过程。即在编译的时候并不能决定真正调用哪个...

  • 关于Runtime 消息发送机制的延伸

    说到OC 不得不说一下OC 的消息转发机制;何为OC 的消息转发机制;其实就是这样的; Objc 在向一个对象发送...

  • iOS开发之消息转发与三次拯救

    一、消息概述 1、消息发送机制 在OC中,方法的调用不再理解为对象调用其方法,而是要理解成对象接收消息,消息的发送...

  • OC中消息发送机制

    OC是C的超集,所以理解OC中的消息通讯机制,首先最好理解C语言中的函数调用方式。C语言使用“静态绑定”,也就是说...

  • OC的消息机制总结

    OC的消息机制 流程总结:1.objc的消息机制,是通过objc_megSend 方法发送消息给 消息接受者,发...

网友评论

    本文标题:OC中消息发送机制

    本文链接:https://www.haomeiwen.com/subject/kygenttx.html