美文网首页
消息转发机制(三次机会)

消息转发机制(三次机会)

作者: 寂寞先森666 | 来源:发表于2019-07-09 15:44 被阅读0次

- (void)viewDidLoad {

    [super viewDidLoad];

    [self performSelector:@selector(eat)];

}

/***第一次、动态解析***/

+(BOOL)resolveInstanceMethod:(SEL)sel

{

//    if (sel == @selector(eat)) {

//        class_addMethod([self class], sel, (IMP)funMethod, "v@:");

//    }

    return YES;

}

void funMethod(id obj,SEL _cmd) {

    NSLog(@"funMethod"); //新的 fun 函数

}

/***第二次、接受者消息重定向***/

- (id)forwardingTargetForSelector:(SEL) aSelector

{

//    if (aSelector == @selector(eat)) {

//        person * p = [[person alloc]init];

//        return p;

//    }

    return nil;

}

/***第三次、获取函数的参数和返回值类型,返回签名***/

- (NSMethodSignature*)methodSignatureForSelector:(SEL)aSelector {

    if ([NSStringFromSelector(aSelector) isEqualToString:@"eat"]) {

        return [NSMethodSignature signatureWithObjCTypes:"v@:"];

    }

    return [super methodSignatureForSelector:aSelector];

}

/***第三次、消息重定向***/

- (void)forwardInvocation:(NSInvocation*)anInvocation {

    SEL sel = anInvocation.selector;  // 从 anInvocation 中获取消息

    person * p = [[person alloc]init];

    if([p respondsToSelector:sel]) {  // 判断 Person 对象方法是否可以响应 sel

        [anInvocation invokeWithTarget:p];  // 若可以响应,则将消息转发给其他对象处理

    }else{

        [self doesNotRecognizeSelector:sel];  // 若仍然无法响应,则报错:找不到响应方法

    }

}

@end


参考链接:https://www.jianshu.com/p/633e5d8386a8

相关文章

  • 消息转发机制(三次机会)

    - (void)viewDidLoad { [super viewDidLoad]; [self perf...

  • (十二) [OC高效系列]消息的派发机制

    1.什么是消息转发机制 消息转发机制是在调用未知方法时出现的 消息转发机制让程序员有机会去处理未知方法 消息转发机...

  • Runtime

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

  • runtime系列文章总结

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

  • iOS消息转发机制

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

  • 《Effective Objective-C 2.0 》 阅读笔

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

  • 消息转发机制(动态消息转发)

    例子分析 1)在给程序添加消息转发功能以前,必须覆盖两个方法,即methodSignatureForSelecto...

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

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

  • 消息发送机制&消息转发机制

    消息发送机制&消息转发机制 消息发送机制:使用了运行时的方式, 通过SEL快速查找IMP的过程. 消息转发机制:I...

  • 消息转发机制

    为什么说 OC 的动态的 严格来说iOS中不存在方法调用的说法,应该说是消息的传递。消息传递和函数调用的区别就是,...

网友评论

      本文标题:消息转发机制(三次机会)

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