理解消息转发机制

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

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

消息转发机制的解读

消息转发分为两大阶段:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值