运行时-方法添加

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:方法执行的返回与传入字符串格式

上一篇下一篇

猜你喜欢

热点阅读