在 iOS中可以直接調(diào)用某個(gè)對(duì)象的消息方式有三種:
一種是[self xxxxxxx];直接對(duì)象調(diào)用
另一種是 performSelector:withObject;
再一種就是 NSInvocation。比較復(fù)雜,容易出錯(cuò)
NSMethodSignature *signature = [object instanceMethodSignatureForSelector:@selector(run:)];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
invocation.target = self;
//注意:這里的方法名一定要與方法簽名類(lèi)中的方法一致
invocation.selector = @selector(run:);
NSString *way = @"byCar";
//這里的Index要從2開(kāi)始,以為0跟1已經(jīng)被占據(jù)了,分別是self(target),selector(_cmd)
[invocation setArgument:&way atIndex:2];
//3、調(diào)用invoke方法
[invocation invoke];
- (void)run:(NSString *)method{
}