class_addMethod()为类添加方法的参数解析
BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types)
作用:这个方法的作用是,给类添加一个新的方法和该方法的具体实现
BOOL: 返回值,yes-------方法添加成功 no--------方法添加失败
Class cls: 将要给添加方法的类,传的类型 [类名 class]
SEL name: 将要添加的方法名,传的类型 @selector(方法名)
IMP imp:实现这个方法的函数 ,传的类型 1,C语言写法:(IMP)方法名 2,OC的写法:class_getMethodImplementation(self,@selector(方法名:))
const char *types:表示我们要添加的方法的返回值和参数
"v@:@":v:是添加方法无返回值 @表示是id(也就是要添加的类) :表示添加的方法类型 @表示:参数类型
const char *types含义表:
还有一点需要注意,用这个方法添加的方法是无法直接调用的,必须用performSelector:调用。
因为performSelector是运行时系统负责去找方法的,在编译时候不做任何校验;如果直接调用编译是会自动校验。
你添加方法是在运行时添加的,你在编译的时候还没有这个本类方法,所以当然不行。
网友评论