Не понимаю, почему мы должны вызвать метод setSelector
на объектах NSInvocation
, когда эта информация уже передана через invocationWithMethodSignature
.Какова цель метода setSelector в классе NSInvocation?
Для создания NSInvocation
объекта мы делаем следующее:
SEL someSelector;
NSMethodSignature *signature;
NSInvocation *invocation;
someSelector = @selector(sayHelloWithString:);
//Here we use the selector to create the signature
signature = [SomeObject instanceMethodSignatureForSelector:someSelector];
invocation = [NSInvocation invocationWithMethodSignature:signature];
//Here, we again set the same selector
[invocation setSelector:someSelector];
[invocation setTarget:someObjectInstance];
[invocation setArgument:@"Loving C" atIndex:2];
Обратите внимание, что мы прошли селектор [SomeObject instanceMethodSignatureForSelector: someSelector];
и снова [invocation setSelector:someSelector];
.
Есть ли что-то, что мне не хватает?
+1 - Приятно видеть здесь вопрос, который еще не был задан (и ответил) уже миллион раз, и не написан на неразгаданном жаргоне мгновенных сообщений. :-) –
Одна маленькая точка: 'signature = [SomeObject instanceMethodSignatureForSelector: someSelector];' должен быть либо 'signature = [[SomeObject class] instanceMethodSignatureForSelector: someSelector]; или signature = [SomeObject methodSignatureForSelector: someSelector]; ' – Brynjar