iphone - NSString basics - memory - retain - copy -


यहाँ मेरा सवाल है।

  NSString * xyz = [NSString stringWithFormat: @ "% मैं% @ ", 10, @" सागर "];  

अब मैं अन्य स्ट्रिंग ले रहा हूं, जैसा कि निम्न है।

  NSString * x2 = [xyz कॉपी];  

मुझे नहीं पता कि यहाँ क्या होगा?
(क्या ऐसा कुछ है, x2 में xyz के रेफरी का रेफ्रेंस है।)

  NSString * x3 = [xyz retain];  

(यहां क्या होगा, x3 की एक नई मेमोरी है जिसकी स्ट्रिंग या [xyz कॉपी] की प्रतिलिपि बनाई गई है?)

अब, इन तीनों स्ट्रिंग्स को कैसे निकालना है स्मृति से?

अग्रिम धन्यवाद।

सागर।

< पूर्व> NSString * xyz = [NSString stringWithFormat: @ "% i% @", 10, @ "सागर"];

यह NSString के आटोरेसलेज्ड इंस्टेंस को बनाएगा - यह तब जारी किया जाएगा जब ऑटोरेक्लोज़ पूल निकाला जाता है (आमतौर पर अगले रन लूप पर)।

  NSString * X2 = [xyz कॉपी];  

सिद्धांत में -copy संदेश ऑब्जेक्ट का एक नया इंस्टेंस बनाएगा गिनती 1 को बनाए रखने के साथ (यह आपको कहीं न कहीं छोड़ना चाहिए), लेकिन जैसा कि NSString ऑब्जेक्ट है अपरिवर्तनीय तब [xyz कॉपी] को अनुकूलित किया जाएगा [xyz बनाए रखना] और इस प्रकार यह एक ही उदाहरण को इंगित करेगा।

  NSString * x3 = [xyz retain]; एक्स 3 एक्सआईज (और एक्स 2) के समान उदाहरण के लिए इंगित करेगा, और इसके बनाए रखने की गिनती बढ़ेगी - आपको अपना ऑब्जेक्ट कहीं और अवश्य अवश्य देना होगा। 

अब, इन सभी तीन तारों को स्मृति से कैसे निकालना है?

सुनिश्चित करें कि आप सभी को कॉपी और मेमोरी के साथ बनाए रखें (प्रतिलिपि) बनाए रखें। अधिक जानकारी के लिए पढ़ें।


Comments

Popular posts from this blog

c++ - QtQuick: QQmlApplicationEngine failed to load component qrc:/main.qml:23 Invalid attached object assignment -

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

asp.net - getting a value of selected radiobutton in LoadViewState -