NSInvocation
本質(zhì)上是把selector轉(zhuǎn)化成一個(gè)對(duì)象霹俺,相對(duì)于performerselector矮燎,可以支持多參數(shù)厘肮,可以處理返回值。
NSInvocation用法
class中添加一個(gè)方法
利用block構(gòu)造
//2 用block實(shí)現(xiàn)setter方法
id setblock = ^(id self,id value, id value2){
// do something
};
//3. 將block的實(shí)現(xiàn)轉(zhuǎn)化為IMP
IMP imp = imp_implementationWithBlock(setblock);
//4. 用name拼接出setter方法
NSString *selString = [NSString stringWithFormat:@"setFood:andWater:"];
//5. 將setter方法加入到class中
BOOL result = class_addMethod(self, NSSelectorFromString(selString), imp, "v@:@@");
利用OC函數(shù)
字節(jié)輸入函數(shù)名
class_addMethod([self class], sel, class_getMethodImplementation(self, @selector(startEngine:)), "s@:@");
利用C函數(shù)
Method, Sel 與 Imp
Method, Sel 與 Imp
有參調(diào)用 ((void()(id,SEL,NSString))imp)(a,selector,@"pcl");
無參調(diào)用 imp()