美文网首页
runTime class_addMethod

runTime class_addMethod

作者: 东丶小菜鸟 | 来源:发表于2018-08-24 11:43 被阅读17次

    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

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