runTime class_addMethod

class_addMethod(Class cls, SEL name, IMP imp,

const char *types)

Class cos:我们需要一个class,比如我的[Person class]。

SEL name:这个很有意思,这个名字自己可以随意想,就是添加的方法在本类里面叫做的名字,但是方法的格式一定要和你需要添加的方法的格式一样,比如有无参数。


IMP imp:IMP就是Implementation的缩写,它是指向一个方法实现的指针,每一个方法都有一个对应的IMP。这里需要的是IMP,所以你不能直接写方法,需要用到一个方法:

OBJC_EXPORT IMP class_getMethodImplementation(Class cls, SEL name)获取一个类里面的对应的方法的指针(imp)

const char *types:这一个也很有意思,我刚开始也很费解,结果看了好多人的解释我释然了,知道吗,我释然啦,。这个东西其实也很好理解:

比如:”v@:”意思就是这已是一个void类型的方法,没有参数传入。

再比如 “i@:”就是说这是一个int类型的方法,没有参数传入。

再再比如”i@:@”就是说这是一个int类型的方法,又一个参数传入。

好了,参数解释完了,还有一点需要注意,用这个方法添加的方法是无法直接调用的,必须用performSelector:调用。为甚么呢?

著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(runTime class_addMethod)