Effective Objective-C 2.0 第12条:理解消息转发机制
来源:互联网 发布:windows 命令行快捷键 编辑:程序博客网 时间:2024/05/29 17:55
消息转发两个阶段
- 先征询接收者,所属的类,看其是否能动态添加方法,已处理当前这个“未知的选择子”(unknow selector),这叫做动态解析(dynamic method resolution)。
- 完整地消息转发机制(full forwarding mechanism)
动态方法解析
对象收到无法解读的消息后,首先调用其所属类的下列类方法:
/* * @param SEL 未知的选择子 * @return BOOL 表示该类是否能新增一个实例方法用以处理此选择子 */+ (BOOL)resolveInstanceMethod:(SEL)selector;
假如尚未实现的方法不是实例方法而是类方法,运行期系统就会调用另一个方法:
+ (BOOL)resolveClassMethod:(SEL)selector;
备援接受者
当前接收者还有第二次机会处理未知的选择子,在这一步中,运行期系统会问它:能不能把这条消息转发给其它接收者处理。
- (id)forwardingTargetForSelector:(SEL)selector;
完整的消息转发
- 创建NSInvocation对象,把与尚未处理的那条消息有关的全部细节都封装于其中。此对象包含选择子、目标及参数。
- 消息派发系统会将NSInvocation对象指派给目标对象,此步骤会调用:
- (void)forwardInvocation:(NSInvocation*)invocation;
这样从子类不命中调用超类,直至NSObject。如果最后调用NSObject类的方法,那么紧接着会抛出异常“doesNotRecognizeSelector”,以抛出异常。
0 0
- Effective Objective-C 2.0 第12条:理解消息转发机制
- Effective Objective-C(第11-14条)动态绑定、objc_msgSend、消息转发机制
- Effective Objective-C(第11-14条)动态绑定、objc_msgSend、消息转发机制
- Effective Objective-C 2.0 编写高质量iOS与OS X代码 理解消息转发机制
- Effective Objective-C 2.0 第6条:理解“属性”
- 第12条:理解消息转发机制(1)
- 第12条:理解消息转发机制(2)
- 第12条:理解消息转发机制(3)
- 第12条:理解消息转发机制(1)
- 第12条:理解消息转发机制(2)
- Effective Objective-C 2.0 第8条:理解“对象等同性”概念
- Effective Objective-C 2.0 第11条:理解objc_msgSend的作用
- Effective Objective-C 2.0 第13条:理解“类对象”的用意
- objective-c消息转发机制
- Objective-c 消息转发机制
- Objective-C 消息转发机制
- Effective objective-C 理解消息forwarding
- <<Effective OC>>读书笔记 --- 第十二条 理解消息转发
- 1030
- 移动平台上100个人复杂障碍物寻路的思考和实现(理论篇)
- 网络文章影响力挖掘
- jQuery UI API - 工具提示框部件(Tooltip Widget)
- android如何快速的浏览本地api。
- Effective Objective-C 2.0 第12条:理解消息转发机制
- 2016北京理工大学研究生考试813试题(回忆版)
- leetcode 198: House Robber
- 详解HTTP中的摘要认证机制
- linux概念架构的理解
- 如何安装SQL Server 2008数据库(带完整图解)
- java中的GregorianCalendar类
- Eclpise_设置Eclipse中的tab键为4个空格
- ORA-02019: 未找到远程数据库的连接说明