NSString की विधि -UTF8String
के लिए प्रलेखन के अनुसार:जीसी के तहत प्रबंधित सी प्रकारों की याददाश्त कैसे होती है?
लौटे सी स्ट्रिंग स्वचालित रूप से बस के रूप में एक लौटे वस्तु जारी किया जाएगा मुक्त कर दिया है, आपको सी स्ट्रिंग की प्रतिलिपि बनाना चाहिए यदि इसे ऑटोरेलीज़ संदर्भ के के बाहर स्टोर करने की आवश्यकता है जिसमें सी स्ट्रिंग बनाई गई है। ,
- (const char*) giveMeACString { NSString* string = @"I'm a string!"; return [string UTF8String]; }
ठीक है इतने लंबे समय बुला विधि लौटे स्थिरांक चार व्यवहार करता है के रूप में * यह एक autoreleased वस्तु होगा के रूप में:
तो नीचे/रिलीज स्मृति प्रबंधन, निम्न विधि बरकरार रहती है।
हालांकि, कचरा संग्रह के तहत एक ऑटोरेलीज संदर्भ नहीं है, जहां तक मुझे पता है। और सी प्रकार कचरा नहीं एकत्रित होते हैं, इसलिए ऐसा नहीं लगता है कि जीसी लौटाए गए पॉइंटर का इलाज करेगा क्योंकि यह एक लौटा ऑब्जेक्ट होगा।
इसके जीवनकाल से क्या जुड़ा हुआ है? क्या यह अभी भी थ्रेड के रनलोप में एक बिंदु पर मुक्त है जो विश्वसनीय रूप से 'बाद में' है, या यह गैर-जीसी के तहत जीसी के तहत अलग-अलग व्यवहार करता है?
मुझे यकीन है कि आप सही हैं कि मुझे इसे मैन्युअल रूप से मुक्त करने की आवश्यकता नहीं है, लेकिन मुझे आश्चर्य है कि कब और कैसे कोको इसे मुक्त करेगा। –