码迷,mamicode.com
首页 > 其他好文 > 详细

Effective Objective-C 2.0 — 第12条:理解消息转发机制

时间:2016-01-17 23:05:15      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

11 条讲解了对象的消息传递机制

12条讲解对象在收到无法解读的消息之后会发生什么,就会启动“消息转发”(message forwarding)机制,

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

 

动态方法解析

对象在收到无法解读的消息之后,首先调用其所属类的下列类方法

+ (BOOL)resolveInstanceMethod:(SEL)selector

返回值为BOOL,表示这个类是否能新增一个实例方法用以处理此选择子。     

使用这种方法的前提是:相关方法的实现代码已经写好,只等着运行的时候动态插在类里面就可以了。此方案常用来实现@dynamic属性,比如说要访问CoreData框架中NSManagedObjects对象的属性时就可以这么做,因为实现这些属性所需的存取方法在编译期就能确定。

下列代码演示了如何用“resolveInstanceMethod:”来实现@dynamic实行;

Effective Objective-C 2.0 — 第12条:理解消息转发机制

标签:

原文地址:http://www.cnblogs.com/IDRI/p/5137974.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!