SEL就是selector的縮寫,它表示Cocoa中的方法選擇器,不明白?那請仔細了解Objective_C的運作時機制與Cocoa底層思想。
看了上面代碼這下你明白了什麼是SEL了吧,平時我們開發當中經常用到的。
有了SEL這樣就可以觸發方法調用了,
上面兩句代碼是同一個道理。
IMP其實就是一個函數指針的概念,就可以這麼簡單了解。
上面這句代碼就是擷取methodWithInt:andInt:這個方法的位址。
有了這個函數指針後,我們就可以觸發方法:
第一個是對象,第二個SEL, 後面的傳入的參數。
新浪微網誌
這是Objc運作時的一個C方法,我們先看一個示列:
NSInvocation相比上面幾種方法,可以動态決定傳入的參數個數。有了它,我們就可以實作…這樣的變參API封裝。
說得有點抽像,看代碼更清楚:
假如我們實作了一個兩個數相加的方法,
我們可以用下面的方法來觸發這個方法,并擷取傳回值。
代碼很容易了解,我也不多做解釋,有不明白的請留言。
下面是變參封裝, 寫了兩個NSObject的Extension(Category):
調用方法: