मुझे विश्वास है कि मैं अधिकांश भाग के लिए गुणों को समझता हूं। मेरा सवाल यह है कि, यदि मेरे पास आवृत्ति चर के लिए कोई संपत्ति है, और मैं इसे अपनी कार्यान्वयन फ़ाइल में किसी विधि से सेट या पुनर्प्राप्त कर रहा हूं, तो क्या मुझे self.myProperty
या केवल myProperty
का उपयोग करना चाहिए? मैं या तो एक काम जानता हूं, लेकिन मैंने मिश्रित सम्मेलनों को देखा है, कभी-कभी कोड संपत्ति के माध्यम से सीधे और अन्य बार चर का उपयोग करता है।क्या मुझे कार्यान्वयन में स्वयं कीवर्ड (गुण) का उपयोग करना चाहिए?
क्या ऐसा करने के लिए कोई तकनीकी कारण है? क्या यह सिर्फ सम्मेलन/व्यक्तिगत वरीयता है? और मैं उन उदाहरणों का जिक्र नहीं कर रहा हूं जहां विधि का पैरामीटर नाम आवृत्ति चर नाम से टकराता है, जो संपत्ति का उपयोग करने का एक कारण हो सकता है (कम से कम, अन्य भाषाओं में, मुझे इस बारे में पता नहीं है)। मुझे लगता है कि जब एक कार्यान्वयन के भीतर संपत्ति का उपयोग करता है, वे जिस तरह से है जिसमें वे संपत्ति घोषित (यानी nonatomic, को बनाए रखने) का लाभ लेना चाहते हैं, तो एक विधि में उदाहरण के लिए, एक कर सकते हैं:
self.myProperty = [someObject someAutoReleasedObject];
के बजाय:
myProperty = [[someObject someAutoReleasedObject] retain];
इस कारण से है? तो क्या केवल कुछ स्थितियां हैं जिनमें संपत्ति का उपयोग करना अच्छा होगा?
मैं उद्देश्य-सी के लिए नया हूं, और यह उन कुछ चीजों में से एक है जो मुझे भ्रमित कर चुके हैं। अब तक मैंने सीधे आवृत्ति चर का उपयोग किया है, सबसे अधिक संभावना झूठी धारणा के तहत कि संपत्ति के माध्यम से जाने से वास्तव में एक विधि/संदेश कॉल/भेजता है और अनावश्यक ओवरहेड जोड़ता है। मुझे पूरा यकीन है कि मैं इसके साथ गलत हूं, लेकिन अगर ओवरहेड में अंतर नगण्य है (यदि कोई भी है तो भी), कोई भी इसे जोड़ने में क्यों चुनता है जब कोई आसानी से चर का उपयोग कर सकता है?
मुझे पूरा यकीन है कि मैं अपनी सोच में गलत हूं, इसलिए मैं यहां पूछ रहा हूं।
मैं इस मान्य करने के लिए कोई डेटा नहीं है लेकिन एप्पल से प्रलेखन के अनुसार:। "तरीकों आप सीधे अपने वर्ग के उदाहरणों में से उदाहरण चर का उपयोग कर सकते में हालांकि, प्रत्यक्ष पहुंच के बजाय एक्सेसर विधियों की अनुशंसा की जाती है, उन मामलों को छोड़कर जहां प्रदर्शन सर्वोपरि है। " देखें: http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/ObjCTutorial/10AppendixA/10AppendixA.html –
आह ठीक है, धन्यवाद। हालांकि यह एक जवाब के रूप में बेहतर होगा। –
यह जोड़ना भूल गया कि यदि आप कोको विकास कर रहे हैं जो केवीओ या बाइंडिंग का उपयोग करता है, तो सीधे पहुंच के बजाय "स्वयं" का उपयोग करने की सलाह दी जाती है क्योंकि कुंजी-मूल्य निरीक्षण और कोको बाइंडिंग अपडेट/परिवर्तनों को सिंक्रनाइज़ करने के लिए कॉलर विधियों पर निर्भर करती है। –