Come posso controllare la firma del selettore o se il selettore richiede o meno parametri?Rileva la firma del selettore
E.g. Voglio verificare se il selettore è di tipo -(void) method
o -(void) method:(id)param
Come posso controllare la firma del selettore o se il selettore richiede o meno parametri?Rileva la firma del selettore
E.g. Voglio verificare se il selettore è di tipo -(void) method
o -(void) method:(id)param
È possibile controllare questo usando respondsToSelector:
, vale a dire qualcosa di simile:
if ([myObject respondsToSelector:@selector(doSomethingWithOneArgument:)]){
....
}
È possibile ottenere un sacco di informazioni su un particolare di selezione con la classe NSMethodSignature
:
id obj = ...
SEL selector = ...
NSMethodSignature *signature = [obj methodSignatureForSelector:selector];
NSUInteger args = [signature numberOfArguments];
int i;
for(i = 0; i < args; i++)
printf("argument type at index %d: %c", i, [signature getArgumentTypeAtIndex:i]);
'[[classe obj] instanceMethodSignatureForSelector: selector]' può essere scritto come '[obj methodSignatureForSelector: selector]' – user102008
Si noti che 'metodo' e' metodo: 'sono considerati come un diverso selettore. – Yuji
Devo chiedere; Cosa stai cercando di fare?!? – bbum
Sto scrivendo un'app utilizzata come framework di test. – Egil