回答
請參閱文檔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