iOS 消息转发

251 阅读1分钟



+ (BOOL)resolveInstanceMethod:(SEL)sel {
    //如果是test方法 打印日志
    if (sel == @selector(test)) {
        NSLog(@"resolveInstanceMethod");
        return NO;
    }else {
        return [super resolveInstanceMethod:sel];
    }
}
- (id)forwardingTargetForSelector:(SEL)aSelector {
 return nil;

}


- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
    if (aSelector == @selector(test)) {
//        v 代表返回值void类型 @代表第一个参数类型id 既self
//        :代表第二个参数是SEL类型 既@selector(test)
        return [NSMethodSignature signatureWithObjCTypes:"v@:"];
    }else {
        return [super methodSignatureForSelector:aSelector];
    }
}