我们实现一个方法 [self performSelector:@selector(bye:) withObject:@"NexusX"]; 但是此时方法不存在
//当系统不断地查找方法 最终找不到的时候 内部会调用该方法 不做处理会崩溃 防止崩溃 重写此方法 在内部实现代码
+ (BOOL)resolveInstanceMethod:(SEL)sel {
//使用Runtime给ViewController类添加一个方法 方法名hello
class_addMethod([self class], @selector(hello), (IMP)helloFunc, "v@:");
XLBlock block = ^(id self, SEL _cmd, NSString *string) {
NSLog(@"%@", string);
};
if (sel == @selector(bye:)) {
//指的是给哪个类添加方法 添加的方法名 函数指针就是方法飞具体实现 可以通过2只能怪方式提供实现 函数名或者block 函数类型对应的enCode编码 void就是v id就是@ SEL就是: NSString就是@
class_addMethod([self class], @selector(bye:), imp_implementationWithBlock(block), "v@:@");
}
return YES;
}
void byeFunc (id self, SEL _cmd, NSString *String) {
NSLog(@"hello");
}