Objective c 检测选择器的签名

Objective c 检测选择器的签名,objective-c,Objective C,如何检查选择器的签名,或者选择器是否需要参数 例如,我想检查选择器的类型是否为-(void)method或-(void)method:(id)param您可以使用respondsToSelector:进行检查,例如: if ( [myObject respondsToSelector:@selector(doSomethingWithOneArgument:)] ){ .... } 您可以通过该类获得有关特定选择器的大量信息: id obj=。。。 SEL选择器=。。。 NSMetho

如何检查选择器的签名,或者选择器是否需要参数


例如,我想检查选择器的类型是否为
-(void)method


-(void)method:(id)param
您可以使用
respondsToSelector:
进行检查,例如:

if ( [myObject respondsToSelector:@selector(doSomethingWithOneArgument:)] ){
    ....
}

您可以通过该类获得有关特定选择器的大量信息:

id obj=。。。
SEL选择器=。。。
NSMethodSignature*签名=[obj methodSignatureForSelector:selector];
NSU整数参数=[signature numberOfArguments];
int i;
对于(i=0;i
注意
方法
方法:
被视为不同的选择器;你想干什么?!?我正在编写一个用作测试框架的应用程序。
[[obj class]instanceMethodSignatureForSelector:selector]
可以写成
[obj methodSignatureForSelector:selector]
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]);