Comment vérifier la signature du sélecteur ou si le sélecteur nécessite ou non des paramètres?Détecter la signature du sélecteur
E.g. Je veux vérifier si le sélecteur est de type -(void) method
ou -(void) method:(id)param
Comment vérifier la signature du sélecteur ou si le sélecteur nécessite ou non des paramètres?Détecter la signature du sélecteur
E.g. Je veux vérifier si le sélecteur est de type -(void) method
ou -(void) method:(id)param
Vous pouvez le vérifier en utilisant respondsToSelector:
, à savoir quelque chose comme ceci:
if ([myObject respondsToSelector:@selector(doSomethingWithOneArgument:)]){
....
}
Vous pouvez obtenir beaucoup d'informations sur un sélecteur particulier avec 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]);
'[[obj class] instanceMethodSignatureForSelector: selector]' peut être écrit comme '[obj methodSignatureForSelector: selector]' – user102008
Notez que 'method' et' method: 'sont considérés comme un sélecteur différent. – Yuji
Je dois demander; Qu'essayez-vous de faire?!? – bbum
J'écris une application utilisée comme cadre de test. – Egil