博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解消息转发机制
阅读量:5993 次
发布时间:2019-06-20

本文共 464 字,大约阅读时间需要 1 分钟。

消息转发机制出现的时机:

在编译期间向类发送了其无法解读的消息并不会报错,因为在运行期间可以继续向类中添加方法,所以编译器在编译时还无法确知类中到底会不会有某个方法实现。当对象收到无法解读的消息后,就会启动消息转发机制。

消息转发机制的解读

消息转发分为两大阶段:

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

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

转载地址:http://quxlx.baihongyu.com/

你可能感兴趣的文章
实现一个简易的静态服务器
查看>>
小白初试gulp(一)
查看>>
webpack+jquery 组件化、模块化开发的解决方案
查看>>
浅谈闭包和异步
查看>>
Ubuntu 16.04搭建LAMP服务器环境
查看>>
响应式-使用rem的js实现
查看>>
判断数据类型
查看>>
JavaScript的for从懵懂到辨明
查看>>
用python手刃leetcode(58):最后一个单词的长度【简单题】
查看>>
[openssh]windows 10使用cygwin安装openssh服务端
查看>>
React全家桶使用指南
查看>>
TCP为什么要三次握手和四次挥手?
查看>>
git使用的良好习惯
查看>>
JVM知识点总览:高级Java工程师面试必备
查看>>
Java集合源码学习(3)LinkedList
查看>>
Gos: GO MODULE解决方案
查看>>
Gos: Armed Golang (solutions for go module, goproxy, cross compilation, etc.)
查看>>
java B2B2C源码电子商务平台
查看>>
Activity中好用的API
查看>>
masonry的滚动视图总结
查看>>