Jak mogę sprawdzić sygnaturę selektora lub czy selektor wymaga parametrów, czy nie?Wykrywanie podpisu selektora
E.g. Chcę sprawdzić, czy przełącznik jest typu -(void) method
lub -(void) method:(id)param
Jak mogę sprawdzić sygnaturę selektora lub czy selektor wymaga parametrów, czy nie?Wykrywanie podpisu selektora
E.g. Chcę sprawdzić, czy przełącznik jest typu -(void) method
lub -(void) method:(id)param
Można to sprawdzić za pomocą respondsToSelector:
, czyli coś takiego:
if ([myObject respondsToSelector:@selector(doSomethingWithOneArgument:)]){
....
}
można uzyskać wiele informacji na temat konkretnego selektora z klasą 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]);
'[[klasa obiektu] instancjaMethodSignatureForSelector: selektor]' może być zapisana jako '[obj methodSignatureForSelector: selector]' – user102008
Zauważ, że 'method' i' method: 'są traktowane jako inny selektor. – Yuji
Muszę zapytać; co próbujesz zrobić?!? – bbum
Piszę aplikację używaną jako szkielet testowy. – Egil