使用runtime动态添加方法
使用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方法来实现
posted on 2017-02-15 14:25 wangdan_whut 阅读(116) 评论(0) 收藏 举报
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号