2010-10-05 19 views
5

के हस्ताक्षर का पता लगाएं मैं चयनकर्ता के हस्ताक्षर की जांच कैसे कर सकता हूं, या चयनकर्ता को पैरामीटर की आवश्यकता है या नहीं?चयनकर्ता

उदा। मैं कि क्या चयनकर्ता प्रकार का है जाँच करना चाहते
-(void) method
या
-(void) method:(id)param

+3

ध्यान दें कि 'विधि' और' विधि: 'को एक अलग चयनकर्ता के रूप में माना जाता है। – Yuji

+3

मुझे पूछना चाहिए; तुम क्या करने की कोशिश कर रहे हो?!? – bbum

+0

मैं एक परीक्षण फ्रेमवर्क के रूप में इस्तेमाल किया गया एक ऐप लिख रहा हूं। – Egil

उत्तर

0

आप देख सकते हैं इस respondsToSelector: उपयोग करते हुए, यानी कुछ इस तरह:

if ([myObject respondsToSelector:@selector(doSomethingWithOneArgument:)]){ 
    .... 
} 
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

'[[obj class] instanceMethodSignatureForSelector: selector] 'के रूप में लिखा जा सकता है' [obj methodSignatureForSelector: selector]' – user102008

संबंधित मुद्दे