Memory management technique for Objective-C iVars/properties -
क्या निम्न कोड अनावश्यक कुछ कर रहा है?
<पूर्व> @ इंटरफेस मायक्लास {NSArray * myArray; } - (शून्य) प्रतिस्थापित ऐरे: (NSArray *) newArray; @ इम्प्लिमेंटेशन मायक्लस - (शून्य) प्रतिस्थापित ऐरे: (एनएसएआरआरई *) नयाअरेरे {यदि (मायअरे) {[मायअरे रिलीज]; MyArray = शून्य; } MyArray = [[NSArray alloc] initWithArray: newArray]; } @end
क्या होगा अगर मैं निम्नलिखित परिवर्तन करता हूं:
1) मेरी एरे एक प्रॉपर्टी बनाई गई:
@property (nonatomic , बनाए रखने) NSArray myArray;
2) को असाइनमेंट बदल दिया गया:
self.myArray = [NSArray arrayWithArray: newArray];
क्या यह मुझे सशर्त हटाने की अनुमति देगा?
आप सशर्त की जरूरत नहीं है; आप शून्य
(एक रिलीज
सहित) संदेश भेज सकते हैं, और कुछ भी नहीं होगा। आपको एक नया सरणी आवंटित करने की भी आवश्यकता नहीं है; आप को बनाए रख सकते हैं
इसके बदले आप को पास कर सकते हैं यदि आप वास्तव में एक NSMutableArray
प्राप्त करने के बारे में चिंतित हैं, तो आप एक कॉपी बना सकते हैं मैं यह करूँगा:
- (शून्य) प्रतिस्थापित ऐरे: (एनएसएआरआरए *) नयाअरेरे {[मायअरे आटोरेलेज]; MyArray = [नयाअरेरे कॉपी]; }
या, यदि आप autorelease
का उपयोग नहीं करना चाहते हैं, तो आप ऐसा कर सकते हैं:
- (शून्य) replaceArray : (NSArray *) नयाअरेरे {यदि (myArray! = NewArray) {[myArray रिलीज़]; MyArray = [नयाअरेरे कॉपी]; }}
Comments
Post a Comment