如何检查选择器的签名,或者选择器是否需要参数?
E.g。我想检查选择器是否为类型
-(void) method
或
-(void) method:(id)param
答案 0 :(得分:8)
您可以使用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]);
答案 1 :(得分:0)
您可以使用respondsToSelector:
进行检查,例如:
if ( [myObject respondsToSelector:@selector(doSomethingWithOneArgument:)] ){
....
}