如何获得方法的arity?

时间:2010-08-26 02:53:35

标签: objective-c introspection

例如,在Javascript中,您可以通过func.length获取arity(函数应该采用的参数数量)。如何获取Objective-C中方法的这些信息?

3 个答案:

答案 0 :(得分:7)

NSMethodSignature对于所有类型的反射信息都很棒。

SEL selector = @selector(foo:);
NSMethodSignature *sig = [someObj methodSignatureForSelector:selector]
int argCount = [sig numberOfArguments];

答案 1 :(得分:2)

当没有接收者对象发送-methodSignatureForSelector:时,可以使用NSStringFromSelector()并计算冒号字符的出现次数。

答案 2 :(得分:1)

来自Objective-C Runtime Reference

  

method_getNumberOfArguments

     

返回a接受的参数数量   方法

     

无符号   method_getNumberOfArguments(方法   方法)参数方法指向的指针   方法数据结构。通过   有问题的方法。回报价值   包含数字的整数   给定的接受的论点   方法