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

OC中消息转发机制

作者: xukunluren | 来源:发表于2017-03-19 13:37 被阅读0次

       在编译期 消息传递的过程中向类发送了其无法解读的消息并不会报错,因为在运行期可以继续向类中添加方法,所以编译器在编译时还无法确知类中到底会不会有某个方法实现。当对象接收到无法解读的消息后,就会启动“消息转发”机制,程序员可经由此过程告诉对象应该如何处理未知消息。

消息转发分为两大阶段:

第一阶段:先征询接收者所属的类,看其是否能动态添加方法,以处理当前这个“未知的选择子”,这叫做“动态方法解析”。

第二阶段:该阶段设计“完整的消息转发机制”。如果运行期系统已经把第一阶段执行完了,那么接收者自己就无法再以动态新增方法的手段来响应包含该选择子的消息了。此时,运行期系统会请求接收者以其他手段来处理与消息相关的方法调用。这分为两小步。首先,请接收者看看有没有其他对象能处理这条消息。如有,则运行期系统会吧消息转给那个对象,于是消息转发过程结束,一切如常。若没有“备援的接收者”,则启动完整的消息转发机制,运行期系统会吧与消息有关的全部细节都封装到NSInvocation对象中,再给接收者最后一次机会,令其设法解决当前还未处理的这条消息。

总结:

1、若对象无法响应某个选择子,则进入想想转发流程。

2、通过运行期的动态方法解析功能,我们可以在需要用到的某个方法时再将其加入类中。

3、对象可以把其无法解读的某些选择子转交给其他对象来处理。

4、经过上述两步之后,如果还是没办法处理选择子,那就启动完整的消息转发机制。

相关文章

  • OC中消息转发机制

    在编译期 消息传递的过程中向类发送了其无法解读的消息并不会报错,因为在运行期可以继续向类中添加方法,所以编译...

  • OC中如何避开消息机制

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

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

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

  • OC消息机制,消息转发机制

    Runtime简称运行时,其中最主要的是消息机制 概述 C 与 OC 的不同 1.C 语言,函数的调用在编译的时候...

  • OC的消息转发机制

    OC的消息转发机制众所周知,OC中的方法调用是利用消息转发实现的。 首先我们来了解一下类的底层构造如下: objc...

  • Runtime知识点整理1

    OC消息机制?消息转发机制流程?什么是Runtime?什么场景下使用? ==============巴拉巴拉......

  • OC中的消息转发机制

    在本文中,将为你解释在OC的动态机制中,一个对象是如何调用,并且在对象中找不到方法的情况下,如何将方法通过"发消息...

  • oc消息转发机制

    一、消息转发机制 在OC中,调用一个对象的方法,实际上是给对象发了一条消息,在编译Objective-C函数调用的...

  • OC消息转发机制

    当一个对象收到它没实现的消息的时候,通常会发生如下的情况。 调用+(BOOL)resolveInstanceMet...

  • OC 消息转发机制

    首先了解几个概念:class 的定义 method的定义 消息转发本质:在运行时将方法地址(imp)和一个名字(s...

网友评论

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

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