运行时-方法添加
2018-06-08 本文已影响10人
lltree
运行时如何添加方法:
//这一该方式为C语言方式写法
//id self,SEL _cmd 为前两个固定的,后边为参数
void mytest(id self,SEL _cmd,int a,int b,int c){
NSLog(@"I'm here-:test,");
}
#pragma mark --动态方法解析
//向类对象发送方
+(BOOL)resolveInstanceMethod:(SEL)sel{
if (sel == @selector(mytest:b:c:)) {
class_addMethod([self class], sel, (IMP)mytest, "v@:iii");
return YES;
}
return [super resolveInstanceMethod:sel];
}
示例说明:
class_addMethod(Class _Nullable cls, SEL _Nonnull name, IMP _Nonnull imp,
const char * _Nullable types)
中参数:
参数1:cls为执行SEL的类,上述为[self class]
参数2:执行的SEL
参数3:替换的方法(IMP)
参数4:方法执行的返回与传入字符串格式