क्या कोई श्रेणी Objective C में प्रोटोकॉल लागू कर सकती है?


88

मेरे पास NSDate पर एक श्रेणी है और यह सुविधाजनक होगा यदि यह एक प्रोटोकॉल लागू कर सकता है जो मैंने पहले बनाया था। क्या यह संभव है? इसके लिए सही सिंटैक्स क्या है?

जवाबों:


144

हाँ, यह संभव है। वाक्य रचना है:

@interface NSDate (CategoryName) <ProtocolName>
@end

@implementation NSDate (CategoryName)
@end

यहाँ विषय पर Apple का प्रलेखन है

क्लास एक्सटेंशन का उपयोग करके ऐसा करना भी संभव है। मुझे यह बहुत पसंद है कि निजी तौर पर प्रत्यायोजित प्रोटोकॉल के अनुरूप हो। ऐसा करने से सार्वजनिक इंटरफ़ेस से कुछ वर्ग के कुछ प्रतिनिधि होने के कार्यान्वयन के विवरण को छुपाया जाता है और हेडर से निर्भरता को हटा दिया जाता है।


बहुत बुरा वहाँ वर्ग श्रेणी के कार्यान्वयन के लिए प्रोटोकॉल घोषणा को स्थानांतरित करने का एक तरीका नहीं है।
एडीबी

@adib यह है कि किस वर्ग के एक्सटेंशन हैं।
निकोलाई रुहे

@ bikram990 दस्तावेज़ को सेवानिवृत्त कर दिया गया है और अब वह विरासत अनुभाग में है। मैंने लिंक अपडेट किया।
निकोलाई रुहे

दुर्भाग्य से हम श्रेणियों में उदाहरण चर घोषित नहीं कर सकते हैं, कि हमें कुछ प्रतिनिधि प्रोटोकॉल कार्यान्वयन के लिए आवश्यकता हो सकती है
yasirmturk

@yasirmturk आप ऐसा कर सकते हैं कि objc_setAssociatedObject :) का उपयोग करके
animaonline
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.