从NSInvocation获取参数值

时间:2010-01-30 03:47:58

标签: objective-c cocoa

有人可以解释如何将值传递给使用时被拦截的不存在的方法:

+ (void)forwardInvocation:(NSInvocation *)anInvocation;

+ (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;

给出如下消息:

[SomeClass doSomething:@"theThing" withSomething:@"aParam"];

我可以毫无问题地获得方法签名,但我对如何获取随其传入的值感到非常困惑。

当我应该使用这些方法或者只是遗漏某些东西时,我完全偏离了基础吗?

1 个答案:

答案 0 :(得分:33)

-[NSInvocation getArgument:atIndex:]

因此,在您的情况下,您可以使用它:

__unsafe_unretained NSString * firstArgument = nil;
__unsafe_unretained NSString * secondArgument = nil;
[theInvocation getArgument:&firstArgument atIndex:2];
[theInvocation getArgument:&secondArgument atIndex:3];
NSLog(@"Arguments: %@ and %@", firstArgument, secondArgument);

请记住,self_cmd是参数0和1。