Как проверить подпись селектора или требует ли селектор параметров или нет?
Например, я хочу проверить, имеет ли селектор тип -(void) method или -(void) method:(id)param
-(void) method
-(void) method:(id)param
Вы можете получить много информации о конкретном селекторе с помощью класса NSMethodSignature:
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]);
Вы можете проверить это, используя respondsToSelector:, то есть что-то вроде этого:
respondsToSelector:
if ( [myObject respondsToSelector:@selector(doSomethingWithOneArgument:)] ){ .... }