SEL就是selector的缩写,它表示Cocoa中的方法选择器,不明白?那请仔细了解Objective_C的运行时机制与Cocoa底层思想。
看了上面代码这下你明白了什么是SEL了吧,平时我们开发当中经常用到的。
有了SEL这样就可以触发方法调用了,
上面两句代码是同一个道理。
IMP其实就是一个函数指针的概念,就可以这么简单理解。
上面这句代码就是获取methodWithInt:andInt:这个方法的地址。
有了这个函数指针后,我们就可以触发方法:
第一个是对象,第二个SEL, 后面的传入的参数。
新浪微博
这是Objc运行时的一个C方法,我们先看一个示列:
NSInvocation相比上面几种方法,可以动态决定传入的参数个数。有了它,我们就可以实现…这样的变参API封装。
说得有点抽像,看代码更清楚:
假如我们实现了一个两个数相加的方法,
我们可以用下面的方法来触发这个方法,并获取返回值。
代码很容易理解,我也不多做解释,有不明白的请留言。
下面是变参封装, 写了两个NSObject的Extension(Category):
调用方法: