回答
请参阅文档NSMethodSignature
和-methodSignatureForSelector:
方法NSObject
。
您可以向对象询问它实现的任何选择器的方法签名,然后可以向方法签名实例发送-numberOfArguments
消息。
**第一解**
的解决方案是混合Objective-C运行函数和NSMethodSignature类。
首先,你需要包含一些头
#include <objc/objc.h>
#include <objc/objc-class.h>
#include <objc/objc-runtime.h>
然后,无论你想,从你的选择,你得到的参数的数量(请注意,每个方法有两个隐含参数自我和_cmd ,所以你必须不能指望他们有只有参数):
SEL sel = @selector(performSelector:onThread:withObject:waitUntilDone:);
Method m = class_getInstanceMethod([NSObject class], sel);
const char *encoding = method_getTypeEncoding(m);
NSMethodSignature *signature = [NSMethodSignature signatureWithObjCTypes:encoding];
int allCount = [signature numberOfArguments]; // The parameter count including the self and the _cmd ones
int parameterCount = allCount - 2; // Count only the method's parameters
**第二方案**
将您的选择器转换为NSString并计算“:”字符。不确定它是否可靠。
为什么不只是'NSMethodSignature *签名= [NSObject instanceMethodSignatureForSelector:sel];' – user102008 2012-04-20 17:39:21
计算冒号将起作用,至少在1989年以来我见过的每一个Obj-C版本都可以使用。;-) – NSResponder 2013-02-25 23:36:03
- 1. 如何正确选择关键字
- 2. 变量数和关键字参数?
- 3. 如何选择大多数关键字匹配的字符串?
- 4. 选择器关键字
- 5. 模型选择 - 此功能无效的关键字参数
- 6. Python的关键字参数
- 7. 的Javascript“参数”关键字
- 8. Groovy的关键字参数
- 9. 关键字参数
- 10. 如何指定文章选择的数字组件参数
- 11. 如何通过大量的关键字参数在python
- 12. 如何选择特定数量的特定数量的ID列?
- 13. 我如何知道熊猫的参数和关键字参数?
- 14. 如何选择数据库不同的关键字不指定任何关键字
- 15. 语法错误:关键字参数后非关键字参数
- 16. 一个带有非关键字参数和关键字参数的函数
- 17. 如何从字符串参数中获取关键字参数?
- 18. 关键字参数/字典
- 19. 选择正确的数字
- 20. 如何从radiabutton/angularjs中选择变量的关键字?
- 21. 如何确定网页中关键字的出现次数?
- 22. ActionScript 2:如何确定关联数组中没有迭代的键的数量?
- 23. 如何选择特定的参数来处理使用*参数?
- 24. 修饰器,添加关键字参数
- 25. NoReverseMatch:带参数'()'和关键字参数
- 26. 我们如何定义一个函数的可选关键字?
- 27. 如何选择一个Javascript选择器的参数?
- 28. 绑定键的参数数量错误
- 29. 如何选择具有关键字的特定行
- 30. 为关键字参数任意数量的设置默认值
如果目标或目标类别都未知,该怎么办? – Kentzo 2013-02-22 10:26:22