美文网首页
理解消息转发机制

理解消息转发机制

作者: 小谨哥哥 | 来源:发表于2016-12-06 14:19 被阅读14次

1.当对象接收到无法解读的消息之后,就会启动消息转发机制,程序员可经由此告诉对象应该如何处理位置消息。

2.消息转发分为两大阶段。第一阶段先征询接受者。所属的类,看其能否动态添加方法,已处理当前这个位置的选择子,这个叫做动态方法解析。第二阶段涉及完整的消息转发机制,如果运行期系统已经把第一阶段执行完了,那么接受者自己就无法在以动态新增方法的手段来响应包含选择子的消息了,接下来就会以其他手段来处理与消息相关的方法调用,

分为两步:a.请接受者看看有没有其他对象能处理这条消息。有的话就把消息给他。b.如果没有备源接收者则启动完整的消息转发机制,运行期系统会把与消息有关的全部细节都封装到NSInvocation对象中。再给接收者最后一次机会。

3.resolveInstanceMethod:(SEl)selector 返回值表示这个类能否新增一个实例方法泳衣处理此选择子,在继续往下执行转发机制之前,本类有机会新增一个处理此选择子的方法。如果添加的是类方法。叫做resolveClassMethod。

4.如果类不能动态解析选择子,则会启动备援接收者,-(id)forwardingTargetForSelector:(SEL)selector,方法参数代表位置的选择子,若当前接受者能找到备援对象,则将其返回,若找不到就返回nil。

5.完整的消息转发

如果转发算法已经来到这一步的话,那么唯一能做的就是启动完整的消息转发机制了,首先创建NSInvocation对象,把尚未处理的那条消息有关的全部细节都封装于其中。此对象包含选择子,目标及参数。在出发NSInvocation对象时,消息派发系统将亲自出马,把消息指派给目标对象。

-(void)forwardInvocation:(NSInvocation *)invocation

6.接收者在每一步中均有机会处理消息,步骤越往后。处理消息的代价就越大。最好能在第一步就处理完,这样的话,运行期系统就可以将此方法缓存起来了,如果这个类的实例稍后还收到同名选择子,那么根本就无需启动消息转发流程。

相关文章

  • 深入理解Object-C消息转发机制

    深入理解Object-C消息转发机制 深入理解Object-C消息转发机制

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

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

  • 《Effective Objective-C 2.0 》 阅读笔

    第12条:理解消息转发机制 1. 消息转发机制 当对象接收到无法解读的消息后,就会启动“消息转发”机制,开发者可经...

  • 理解消息转发机制

    1.当对象接收到无法解读的消息之后,就会启动消息转发机制,程序员可经由此告诉对象应该如何处理位置消息。 2.消息转...

  • Runtime

    相关简单介绍 消息机制消息传递机制消息转发机制-动态添加方法消息转发机制-快速转发消息转发机制-慢速转发消息转发机...

  • runtime系列文章总结

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

  • iOS消息转发机制

    消息转发机制: 消息转发机制是相对于消息传递机制而言的。 1、消息(传递)机制 RunTime简称运行时。就是系统...

  • 11.理解消息转发机制

    1、当对象接收到无法解读的消息,就会启动消息转发机制。 2、开发者在写自己的类时,可以转发过程中设置挂钩,用以执行...

  • iOS---理解消息转发机制

    什么是消息转发机制? 由于OC是一门动态语言,可以在运行期继续向类中添加方法,所以在编译器向类发送未实现的方法并不...

  • 理解消息转发机制--Effective笔记

    理解消息转发流程: 1,若对方无法相应某个选择子,则进入消息转发流程2,通过运行期的动态方法解析功能,我们可以在需...

网友评论

      本文标题:理解消息转发机制

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