मैं एक कार्यान्वित प्रोटोकॉल की आवश्यकता के बिना एक NSObject उदाहरण पर एक चयनकर्ता का उपयोग करना चाहता हूं । उदाहरण के लिए, एक श्रेणी विधि है जिसमें एक त्रुटि गुण सेट किया जाना चाहिए यदि NSObject उदाहरण जिसे यह कहा जाता है वह समर्थन करता है। यह कोड है, और कोड इरादा के अनुसार काम करता है:
if ([self respondsToSelector:@selector(setError:)])
{
[self performSelector:@selector(setError:) withObject:[NSError errorWithDomain:@"SomeDomain" code:1 userInfo:nil]];
}
हालाँकि, कंपाइलर को सेटर्र: सिग्नेचर: के साथ कोई भी विधि दिखाई नहीं देती है, इसलिए यह मुझे एक चेतावनी देता है, जिसमें प्रत्येक पंक्ति में @selector(setError:)
स्निपेट होता है :
Undeclared selector 'setError:'
मैं इस चेतावनी से छुटकारा पाने के लिए एक प्रोटोकॉल की घोषणा नहीं करना चाहता, क्योंकि मैं उन सभी वर्गों को नहीं चाहता जो कुछ विशेष लागू करने के लिए इसका उपयोग कर सकते हैं। बस अधिवेशन से मैं चाहता हूं कि उनके पास एक setError:
विधि या संपत्ति हो।
क्या यह करने योग्य है? कैसे?
चीयर्स,
ईपी