有人可以解释如何将值传递给使用时被拦截的不存在的方法:
+ (void)forwardInvocation:(NSInvocation *)anInvocation;
+ (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;
给出如下消息:
[SomeClass doSomething:@"theThing" withSomething:@"aParam"];
我可以毫无问题地获得方法签名,但我对如何获取随其传入的值感到非常困惑。
当我应该使用这些方法或者只是遗漏某些东西时,我完全偏离了基础吗?
答案 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。