美文网首页
11.理解消息转发机制

11.理解消息转发机制

作者: 写代码写到人生巅峰 | 来源:发表于2017-05-05 22:46 被阅读0次

1、当对象接收到无法解读的消息,就会启动消息转发机制。

//  比如无意中对NSNumber执行了NSString的lowercaseString方法
-[__NSCFNumber lowercaseString]: unrecognized selector sent to instance 0xb000000000000012

2、开发者在写自己的类时,可以转发过程中设置挂钩,用以执行预定的逻辑,而不应使程序崩溃。

3、消息转发过程(直到能找到处理对象,否则crash)

//  3.1.动态方法解析,看其能否动态添加方法
+ (BOOL)resolveClassMethod:(SEL)sel;
+ (BOOL)resolveInstanceMethod:(SEL)sel;
//  如果返回NO, 寻找备援接收者,找到返回,找不到返回nil
+ (id)forwardingTargetForSelector:(SEL)selector;
//  3.2.执行完整的消息转发,创建NSInvocation对象(未处理的消息的有关全部信息封装进去),有信息派发中心,把消息指派给目标对象
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
- (void)forwardInvocation:(NSInvocation *)invocation;

4、添加方法

//  IMP: 指针函数,指向待添加方法
/*  types:待添加方法类型编码
 *  void run(id self, SEL _cmd)对应为 class_addMethod(self, sel, (IMP)run, "v@:");
 *  类型编码含义如下:
    v : 返回void值
    @ : id(self)
    : : SEL(_cmd)
    @ : id(value)
 */
OBJC_EXPORT BOOL class_addMethod(Class cls, SEL name, IMP imp,
                                 const char *types)

相关文章

  • 11.理解消息转发机制

    1、当对象接收到无法解读的消息,就会启动消息转发机制。 2、开发者在写自己的类时,可以转发过程中设置挂钩,用以执行...

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

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

  • iOS理解Objective-C中消息转发机制附Demo

    iOS理解Objective-C中消息转发机制附Demo iOS理解Objective-C中消息转发机制附Demo

  • 《Effective Objective-C 2.0 》 阅读笔

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

  • 理解消息转发机制

    1.当对象接收到无法解读的消息之后,就会启动消息转发机制,程序员可经由此告诉对象应该如何处理位置消息。 2.消息转...

  • Runtime

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

  • runtime系列文章总结

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

  • iOS消息转发机制

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

  • iOS---理解消息转发机制

    什么是消息转发机制? 由于OC是一门动态语言,可以在运行期继续向类中添加方法,所以在编译器向类发送未实现的方法并不...

  • 理解消息转发机制--Effective笔记

    理解消息转发流程: 1,若对方无法相应某个选择子,则进入消息转发流程2,通过运行期的动态方法解析功能,我们可以在需...

网友评论

      本文标题:11.理解消息转发机制

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