2010-02-10 12 views
25

मुझे लगता है मैं लिखने की ज़रूरत पता:सत्यापित करें कि कोई प्रतिनिधि किसी चयनकर्ता को क्या प्रतिसाद देता है?

[delegate respondsToSelector:@selector(myMethod:)] 

लेकिन संकलक शिकायत कर रहा है कि respondsToSelector प्रोटोकॉल है, जो सही है में एक विधि नहीं है, फिर भी मैं कई नमूना कोड इस प्रयोग देखा है, तो आप इसे कैसे करते हो ?

उत्तर

58

आपका @protocol<NSObject> को लागू करने की जरूरत है, बस इस तरह देखने के लिए अपनी प्रोटोकॉल परिभाषा अद्यतन:

@protocol MyProtocol <NSObject> 
+0

मैं कुछ गलत कर रहा हो सकता है, लेकिन जब मैं जोड़ने संकलक शिकायत है कि कोई प्रकार इंटरफ़ेस से पहले निर्दिष्ट किया जा सकता –

+0

क्या आप अपना कोड प्रदान कर सकते हैं? एक वाक्यविन्यास मुद्दा होना चाहिए। –

+0

मुझे यह काम मिल गया है मैं औपचारिक परिभाषा में प्रोटोकॉल घोषणा में लागू करने की कोशिश कर रहा था, यह अब काम कर रहा है। धन्यवाद। –

9

Greg Martin आपका जवाब है, लेकिन यहाँ की एक त्वरित स्पष्टीकरण क्यों संकलक की शिकायत है:

respondsToSelector: विधि NSObject प्रोटोकॉल का हिस्सा है, इसलिए जब आप अपने deleate के लिए कि संदेश भेजने का प्रयास (की id टाइप करें), कंपाइलर को यह जानने का कोई तरीका नहीं है कि आपका प्रतिनिधि इसे संभालने में सक्षम हो सकता है।

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