2010-11-08 10 views
12

जब मैंने डेलोक को लागू करने की बात आती है तो किताबों और वेब दोनों में कोड के विभिन्न बिट्स को देखते समय मैंने थोड़ा उलझन देखा है। मेरा सवाल यह है कि @property का उपयोग करते समय मुझे निम्नलिखित में से किस का उपयोग करना चाहिए। अब तक मैं VERSION_001 का उपयोग कर रहा हूं।dealloc, रिलीज का उपयोग करें या गुणों के लिए शून्य पर सेट?

@property(nonatomic, retain) NSString *name; 
@property(nonatomic, retain) NSString *type; 
@property(nonatomic, retain) NSString *payload; 
@property(nonatomic, retain) NSString *orbit; 

संस्करण 001

- (void)dealloc { 
    [name release]; 
    [type release]; 
    [payload release]; 
    [orbit release]; 
    [super dealloc]; 
} 

संस्करण 002

- (void)dealloc { 
    [self setName:nil]; 
    [self setType:nil]; 
    [self setPayload:nil]; 
    [self setOrbit:nil]; 
    [super dealloc]; 
} 

उत्तर

17

वहाँ कोई वास्तविक अंतर है, जब तक आप @synthesize कीवर्ड का उपयोग नहीं कर रहे हैं। जब आप गुणों को शून्य पर सेट करते हैं, तो उन्हें सेटटर द्वारा दृश्यों के पीछे छोड़ दिया जाता है। अब, मुट्ठी संस्करण पर थोड़ी सी प्रदर्शन में वृद्धि हो सकती है, क्योंकि दृश्यों के पीछे इतनी जरूरत नहीं है (उदा। पॉइंटर तुलना, और बाकी सब कुछ दृश्यों के पीछे सेब छुपाता है)। मैं हमेशा संस्करण 001 का उपयोग करता हूं, क्योंकि यह बिंदु के लिए अधिक है और भविष्य के डेवलपर्स को खोदने की ज़रूरत नहीं है, हालांकि मेरा कोड यह पता लगाने के लिए है कि मैं क्या कर रहा हूं।

+0

धन्यवाद, बस जो मैंने किया था, बहुत सराहना की। – fuzzygoat

+1

कोई समस्या नहीं, कभी भी, जवाब को स्वीकार करना न भूलें :) –

+3

संस्करण 1 से अधिक संस्करण 1 का एक बड़ा फायदा यह है कि यदि कुछ दिन आप इन गुणों में से किसी एक के लिए सेटर को कुछ गैर-तुच्छ काम करने के लिए संशोधित करते हैं, आप संस्करण 1 में प्रदर्शन या संभावित गलत व्यवहार नहीं करेंगे। संस्करण 2 आपको आसानी से सड़क के नीचे कुछ दिन महसूस किए बिना अपने कोड में बग पेश कर सकता है। – Ryan

संबंधित मुद्दे