Non capisco perché dobbiamo chiamare il metodo setSelector
sugli oggetti NSInvocation
quando tali informazioni sono già passate tramite invocationWithMethodSignature
.Qual è lo scopo del metodo setSelector nella classe NSInvocation?
Per creare un oggetto NSInvocation
facciamo la seguente:
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];
noti che abbiamo passato il selettore [SomeObject instanceMethodSignatureForSelector: someSelector];
e di nuovo a [invocation setSelector:someSelector];
.
C'è qualcosa che mi manca?
+1 - È bello vedere qui una domanda che non è stata posta (e risposta) già un milione di volte, e non è scritta in un gergo istantaneo indecifrabile. :-) –
Un piccolo punto: 'signature = [SomeObject instanceMethodSignatureForSelector: someSelector];' dovrebbe essere sia 'signature = [[SomeObject class] instanceMethodSignatureForSelector: someSelector]; o signature = [SomeObject methodSignatureForSelector: someSelector]; ' – Brynjar