天天看点

Cocoa触发方法调用的几种方法

SEL就是selector的缩写,它表示Cocoa中的方法选择器,不明白?那请仔细了解Objective_C的运行时机制与Cocoa底层思想。

看了上面代码这下你明白了什么是SEL了吧,平时我们开发当中经常用到的。

有了SEL这样就可以触发方法调用了,

上面两句代码是同一个道理。

IMP其实就是一个函数指针的概念,就可以这么简单理解。

上面这句代码就是获取methodWithInt:andInt:这个方法的地址。

有了这个函数指针后,我们就可以触发方法:

第一个是对象,第二个SEL, 后面的传入的参数。

新浪微博

这是Objc运行时的一个C方法,我们先看一个示列:

NSInvocation相比上面几种方法,可以动态决定传入的参数个数。有了它,我们就可以实现…这样的变参API封装。

说得有点抽像,看代码更清楚:

假如我们实现了一个两个数相加的方法,

我们可以用下面的方法来触发这个方法,并获取返回值。

代码很容易理解,我也不多做解释,有不明白的请留言。

下面是变参封装, 写了两个NSObject的Extension(Category):

调用方法: