Получение значений аргумента из NSInvocation - PullRequest
13 голосов
/ 30 января 2010

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

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

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

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

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

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

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

1 Ответ

33 голосов
/ 30 января 2010

-[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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...