मैंने देखा है कि अधिकतर उद्देश्य-सी कोडर सीधे उदाहरण चरों तक पहुंचने पर self->ivar
वाक्यविन्यास का उपयोग नहीं करते हैं। अधिकांश नमूना कोड जो मैं देखता हूं, बस self->
के बिना इंस्टेंस चर का संदर्भ देता है। मुझे लगता है कि यह एक उदाहरण चर के संदर्भ में स्पष्ट रूप से भ्रमित करने के लिए भ्रमित है कि यह एक उदाहरण चर है और न केवल वर्तमान दायरे का एक चर है।इंस्टेंस चर का उपयोग करते समय स्वयं-> ivar का उपयोग
मुझे लगता है कि मैं सामान लिखने के लिए की तरह हैं:
- (void)dealloc {
[self->someVar release];
[self->anotherVar release];
[super dealloc];
}
या
- (void)setVar:(Foo *)newVar {
[self->var autorelease];
self->var = [newVar retain];
}
कई बार की एक पूरी बहुत कुछ नहीं कर रहे हैं जब हम कभी भी एक का उपयोग किए बिना हमारे उदाहरण चर का उपयोग करना चाहिए encapsulation के लिए accessor, लेकिन कभी-कभी हमें dealloc, या कस्टम गेटर्स और सेटर्स में की जरूरत है।
क्या मैं ऐसा करने के लिए एक बुरे व्यक्ति/प्रोग्रामर हूं? क्या इस तरह कोड लिखने के लिए कुछ वाकई अच्छा कारण है? क्योंकि यह इस तरह से करने के लिए वास्तव में अच्छा लगता है।
जैसा मैंने कहा, यह छोटा है। मैं इसे पसंद करता हूं, लेकिन मैं तर्क नहीं दे सका कि छोटे पहचानकर्ता हमेशा बेहतर होते हैं, हालांकि - मैं कोड को बनाए रखने से नफरत करता हूं जो कि सभी एक्स, वाई और जेड है। तो यह अनिवार्य रूप से एक मामला है जहां आप अपना खुश माध्यम पाते हैं। मुझे संदेह है कि पाइथोनिस्ट शायद 'स्वयं->' फॉर्म पसंद करेंगे। बेशक, आपको उद्देश्य-सी में वैसे भी प्रत्यक्ष ivar पहुंच नहीं करनी चाहिए, वैसे भी। हो सकता है कि अप्रत्याशित होना 'स्वयं-> वाक्यविन्यास का एक और गुण है। – Chuck
लॉल। "त्वचा सोचो"। क्या वह त्वचा है जो पतली और मोटी तरह की है? – Rob