Подтвердить что ты не робот

Получение значений аргументов из NSInvocation

Может ли кто-нибудь объяснить, как нужно передавать значения, переданные несуществующему методу, который перехватывается при использовании:

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

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

Учитывая сообщение типа:

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

Я могу получить подпись метода без проблем, но я ужасно смущен тем, как получить значения, которые были переданы вместе с ним.

Я полностью отключаюсь, когда должен использовать эти методы или просто что-то не хватает?

4b9b3361

Ответ 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.