美文网首页
运行时-方法添加

运行时-方法添加

作者: lltree | 来源:发表于2018-06-08 17:33 被阅读10次

    运行时如何添加方法:

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

    相关文章

      网友评论

          本文标题:运行时-方法添加

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