美文网首页
理解OC中的消息机制

理解OC中的消息机制

作者: 农村高富帅 | 来源:发表于2017-02-28 23:52 被阅读0次

OC中在对象上调用方法其实就是给该对象发送一个消息,比如

Student *student = [Student new];
[student getName:name ];

例子中,可以理解为给student对象发送一个消息,其中student是接受者,getName是选择子,选择子和参数合起来就是消息。
  编译器编译的时候会把例子中的代码转换成标准的C语言函数调用,即objc_msgSend,如下:

objc_msgSend(student,@selector(getName:),name);

而obje_msgSend的原型是

void obje_msgSend(id self,SEL cmd,...)

这是一个参数个数可变的函数,能接受多个参数,第一个参数是接受者,第二个参数是选择子,后续参数是消息中的参数。obje_msgSend函数会依据接受者与选择子的类型来调用适当的方法,为了完成此操作,该方法需要在Student中遍历其方法列表,如果能找到与选择子相匹配的方法,就调至该方法的实现代码。如果找不到,那就沿着集成体系继续向上查找。如果最终还是找不到相匹配的方法,那就执行 message forwarding (消息转发)操作。
  其实在遍历Student中的方法列表之前,这个操作还会去遍历Student的 fast map,这是每个类都会有的一块缓存区域,该缓存中存放着obje_msgSend函数的匹配结果。这样做的目的是为了提高消息传递的效率。

相关文章

  • 理解OC中的消息机制

    OC中在对象上调用方法其实就是给该对象发送一个消息,比如 例子中,可以理解为给student对象发送一个消息,其中...

  • OC中的消息机制和动态运行时

    消息机制:OC中的实例对象调用一个方法称作消息传递 OC中里的消息传递采用动态绑定机制来决定具体调用哪个方法,OC...

  • iOS runtime

    runtime 是 oc 语音的基础首先runtime的核心机制是消息机制 也就是oc的消息机制首先oc的消息机制...

  • Objective-C语言消息转发机制详解

    消息传递机制 在OC中,方法的调用不再理解为对象调用其方法,而是要理解成对象接收消息,消息的发送采用‘动态绑定’机...

  • OC消息传递机制三道防线:消息转发机制详解

    消息传递机制 在OC中,方法的调用不再理解为对象调用其方法,而是要理解成对象接收消息,消息的发送采用‘动态绑定’机...

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

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

  • 理解oc消息传递机制

    最简单的动态 Objective-C 是一门极其动态的语言,许多东西都可以推迟到运行时决定、修改。那么到底何为动态...

  • OC中消息发送机制

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

  • OC-Runtime-Class结构和OC消息机制

    OC - Runtime - Class 结构 和 OC 消息机制 Runtime 源码中 Class 结构如下:...

  • Runtime 消息传递机制三道防线(二)

    在OC中,方法的调用不再理解为对象调用其方法,而是要理解成对象接收消息,消息的发送采用‘动态绑定’机制,具体会调用...

网友评论

      本文标题:理解OC中的消息机制

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