Получение значений аргументов из NSInvocation
Может ли кто-нибудь объяснить, как нужно передавать значения, переданные несуществующему методу, который перехватывается при использовании:
+ (void)forwardInvocation:(NSInvocation *)anInvocation;
+ (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;
Учитывая сообщение типа:
[SomeClass doSomething:@"theThing" withSomething:@"aParam"];
Я могу получить подпись метода без проблем, но я ужасно смущен тем, как получить значения, которые были переданы вместе с ним.
Я полностью отключаюсь, когда должен использовать эти методы или просто что-то не хватает?
Ответы
Ответ 1
-[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.