首页 > 其他 > 详细

使用runtime动态添加方法

时间:2017-02-15 14:57:11      阅读:187      评论:0      收藏:0      [点我收藏+]

使用runtime动态添加方法首先需要了解两个方法

 

// 当一个累调用未实现的方法,会调用这个方法处理,并且会把对应的方法列表传过来.

+(BOOL)resolveClassMethod:(SEL)sel


// 当一个对象调用未实现的方法,会调用这个方法处理,并且会把对应的方法列表传过来.

+ (BOOL)resolveInstanceMethod:(SEL)sel{
    if (sel == @selector(test)) {
        // 动态添加test方法
        // 第一个参数:给哪个类添加方法
        // 第二个参数:添加方法的方法编号
        // 第三个参数:添加方法的函数实现(函数地址)
        // 第四个参数:函数的类型,(返回值+参数类型) v:void @:对象->self :表示SEL->_cmd
        class_addMethod(self, @selector(hehe), hehe, "v@:");
    }

    return [super resolveInstanceMethod:sel];

}


// 每个函数默认方法都有两个隐式参数,
void hehe(id self,SEL sel)
{
    NSLog(@"%@ %@",self,NSStringFromSelector(sel));
}

在相应的类里实现resolveInstanceMethod方法如果test方法没有实现,我们就可以动态添加hehe方法来实现

使用runtime动态添加方法

原文:http://www.cnblogs.com/whutDaniel/p/6401285.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!