美文网首页
iOS 消息转发

iOS 消息转发

作者: __May__ | 来源:发表于2019-03-19 20:21 被阅读0次

对象收到无法解读的消息时,就会启动消息转发机制

第一个阶段:动态方法解析。

1. 对象在收到无法解读的消息后,首先将调用其所属类下面这个类方法

+(BOOL) resolveInstanceMethod:(SEL)selector; //参数名为那个未知的选择子

也就是再继续往下执行转发机制之前,本类有机会新增一个处理这个选择子的方法。

如果选择子的方法是个类方法,则使用

+(BOOL) resolveClassMethod:(SEL)selector。

2.备援接收着

接收者第二次处理无法解读消息的机会,将消息转给其他接收者来处理

-(id)forwardingTargetForSelector:(SEL)selector

第二个阶段:完整的消息转发。

到了这个一步就要启动完整消息转发机制,首先要创建NSInvocation,把尚未处理的消息的全部细节放进去,触发NSInvocation时,通过消息派发系统,将消息指派给目标对象。

-(void)forwardInvocation:(NSInvocation *)invocation

跟备援接收者 方案所实现的方法等效。实现方法时,若发现某调用操作不应由本类处理,则需要调用超类的同名方法。所以继承体系中每个类都有机会处理此调用请求。直到NSObject, 最后还会调用

doesNotRecognizeSelector:  以抛出异常。表明消息最终没有被处理。

相关文章

  • iOS 消息发送与转发详解

    iOS 消息发送与转发详解 iOS 消息发送与转发详解

  • iOS理解Objective-C中消息转发机制附Demo

    iOS理解Objective-C中消息转发机制附Demo iOS理解Objective-C中消息转发机制附Demo

  • runtime系列文章总结

    《iOS Runtime详解(消息机制,类元对象,缓存机制,消息转发)》《消息转发机制与Aspects源码解析》《...

  • iOS消息转发

    title: “iOS消息转发”date: 2016-03-22 13:48:38tags: 消息转发这块,我学习...

  • ios 消息转发

    ios在类中,没有定义的函数,要走消息转发流程。如果不走消息转发流程,程序会奔溃。消息转发流程分四步调用。 第一步...

  • iOS 消息转发

    有时候我们常常看到一个cash 信息,意思是这个对象不存在这个方法,你向这个对象发送消息就会crash。 我们除了...

  • iOS 消息转发

    消息转发是Objective-C运行时的一个重要特性,具体表现是当调用一个不存在的方法时,并不会立马Crash,R...

  • ios — 消息转发

    概念 首先我们需要简单了解下,什么是oc的消息以及oc中的消息转发。先看一段简单的代码 oc中调用方法就是向对象发...

  • iOS消息转发

    类对象在接收到无法解读的消息时,会出现unrecognized selector sent to instance...

  • iOS消息转发

    消息转发的前提 在对象收到无法解读的消息时会触发消息转发 消息转发的过程 I. resolveInstanceMe...

网友评论

      本文标题:iOS 消息转发

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