मैंने हमेशा सोचा कि कोई श्रेणी में ऑब्जेक्ट प्रॉपर्टी घोषित नहीं कर सकता है। जब तक मेरे साथी ने हमारे ऐप के कोड में ऐसा नहीं किया, और यह काम करना प्रतीत होता था।एक श्रेणी में उद्देश्य-सी 2.0 गुणों को घोषित करना कब संभव है?
मैं उसे एसओ और Google बिंग पर गया ताकि उसे समझाया जा सके कि नहीं, उद्देश्य-सी श्रेणियों का उपयोग केवल विधियों को जोड़ने के लिए किया जा सकता है, गुण नहीं। मैं इस तरह के रूप सवाल पाया:
- Setting New Property In Category Interface Implementation (स्वीकार किए जाते हैं जवाब को देखो)
- Can I add a property for a method not in my category?
लेकिन तब मैं एप्पल के साइट पर this link कि @property घोषणा के बारे में निम्नलिखित शामिल पाया:
एक संपत्ति घोषणा कीवर्ड @property से शुरू होती है। @property किसी भी वर्ग के @interface में प्राप्त घोषणा सूची में कहीं भी दिखाई दे सकता है। @property प्रोटोकॉल या श्रेणी की घोषणा में भी दिखाई दे सकता है। (जोर जोड़ा)
मुझे पता है कि यह काम नहीं करता:
@interface MyClass()
NSInteger foobar;
- (void) someCategorizedMethod;
@end
लेकिन इस संकलित:
@interface MyClass()
@property NSInteger foobar;
- (void) someCategorizedMethod;
@end
मेरा प्रश्न है (क) क्या यहाँ सबसे अच्छा अभ्यास है? और (बी) यह ऐसा कुछ है जो उद्देश्य-सी 2.0 के लिए नया है, और "असली" iVar का उपयोग करने के बजाय, यह इस काम को करने के लिए दृश्यों के पीछे सहयोगी भंडारण का उपयोग करता है?
इसमें जोड़ने के लिए, उसका पहला उदाहरण जहां वह एक आईवीआर जोड़ता है, वह पूरी तरह से एलवीएम में -Xclang -fobjc-nonfragile-abi2 –
के साथ मान्य है, अगर वह एक ivar जोड़ रहा होगा। उस स्थिति में, वह एक स्थिर चर जोड़ रहा है जो एक आवृत्ति चर नहीं है। – bbum
व्यापक स्पष्टीकरण के लिए धन्यवाद। मैं अपने कोडिंग भागीदारों के साथ इस लिंक को साझा करूँगा !! – makdad