美文网首页
消息转发机制

消息转发机制

作者: foolish_hungry | 来源:发表于2018-05-03 19:04 被阅读0次

分为两大阶段 (参考 高质量iOS 与 OSX 的52 个有效方法)

1.动态解析(dynamic method resolution)
先征询接受者,所属的类,看其是否能动态添加方法, 处理当前未知的选择子

  1. 完整的消息转发机制
    第一阶段执行完, 就无法以动态新增方法的手段来相应包含选择子的消息了. 此时, 运行期系统会请求接收者以其手段来来处理与选择子相关的方法调用; 这又分为两小步
    2.1 首先接受者看看其他对象能否处理这条消息, 若有,运行期系统会把消息转发给那个对象, 消息转发结束.
    2.2若没有''备援的接受者(replacement receiver)", 则启动完整的消息转发机制, 运行期系统会把与消息相关的全部细节(选择子, 目标, 参数)封装到NSInvocation 对象中, 再给接受者最后一次机会, 令其设法解决当前还未处理的消息. 在触发NSInvocation对象时, 消息派发系统(message-dispatch system)会亲自出马, 把消息指派给目标对象.

完整流程图

消息转发流程

总结:

  1. 若对象无法响应某个选择子, 则进入消息转发流程
  2. 通过运行期的动态方法解析功能, 我们可以在需要用到某个方法时再将其加入到类中;
  3. 对象可以把无法解读的某些选择子转交给其他对象来处理.
    4.经过上述两步之后, 如果还是没法处理选择子, 则就启动完整的消息转发机制;

相关文章

  • Runtime

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

  • runtime系列文章总结

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

  • iOS消息转发机制

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

  • 《Effective Objective-C 2.0 》 阅读笔

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

  • (十二) [OC高效系列]消息的派发机制

    1.什么是消息转发机制 消息转发机制是在调用未知方法时出现的 消息转发机制让程序员有机会去处理未知方法 消息转发机...

  • 消息转发机制(动态消息转发)

    例子分析 1)在给程序添加消息转发功能以前,必须覆盖两个方法,即methodSignatureForSelecto...

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

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

  • 消息发送机制&消息转发机制

    消息发送机制&消息转发机制 消息发送机制:使用了运行时的方式, 通过SEL快速查找IMP的过程. 消息转发机制:I...

  • 消息转发机制

    为什么说 OC 的动态的 严格来说iOS中不存在方法调用的说法,应该说是消息的传递。消息传递和函数调用的区别就是,...

  • 消息转发机制

    前言 在上一篇Runtime源码 方法调用的过程中我们了解了消息的响应过程,即 先缓存查找,若未找到 接下来查找本...

网友评论

      本文标题:消息转发机制

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