2009-02-04 12 views
51

क्या कोई यह देखने के लिए सबसे अच्छा तरीका जानता है कि वैकल्पिक प्रोटोकॉल विधि लागू की गई है या नहीं।यह देखने के लिए जांच कर रहा है कि कोई वैकल्पिक प्रोटोकॉल विधि लागू की गई है

मैंने कोशिश की यह:

if ([self.delegate respondsToSelector:@selector(optionalProtocolMethod:)]) 

जहां प्रतिनिधि है:

id<MyProtocol> delegate; 

हालांकि, मैं कह रही है कि समारोह respondsToSelector: प्रोटोकॉल में नहीं पाया जाता है कोई त्रुटि मिलती है!

उत्तर

98

respondsToSelector:NSObject प्रोटोकॉल का हिस्सा है। MyProtocol में NSObject सहित आपकी समस्या का समाधान करना चाहिए:

@protocol MyProtocol <NSObject> 

@optional 
-(void)optionalProtocolMethod:(id)anObject; 

@end 
+3

सिवाय इसके कि आपको अपने प्रतिनिधियों को बनाए रखना नहीं है, तो आप [प्रतिनिधि रिलीज] क्यों कॉल कर रहे हैं? – SilverSideDown

+1

ग्रिलिक्स के लिए उचित होने के लिए ऐसी स्थितियां हैं जहां एक प्रतिनिधि को बनाए रखा जाना चाहिए। –

+0

@ माइकवेलर प्रतिनिधि को बनाए रखने के लिए उपयोग के मामलों के बारे में उत्सुक है। कोई उदाहरण नहीं है कि आप ऐसा क्यों करेंगे? – memmons

2

करते हैं तो क्या मैं निम्नलिखित नुस्खा आवेदन कर रहा है:

if(self.delegate && [self.delegate respondsToSelector:@selector(closed)]){ 
    [self.delegate closed]; 
} 

कहाँ 'बंद' विधि है कि मैं फोन करना चाहता था है।

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