मैं ग्रहण के रूप में, इस एआरसी के तहत के ठीक से कार्य करेंगे अपरिवर्तनीय वस्तु के लिए:ऑब्जेक्टिव-सी अपरिवर्तनीय वस्तु copyWithZone: एआरसी-संगत प्राप्ति
- (id) copyWithZone:(NSZone *)zone {
return self;
}
लेकिन अगर मैं गहरी प्रति की जरूरत है, मैं कुछ इस तरह लिखना चाहिए:
- (id) copyWithZone:(NSZone *)zone {
Immutable *copy = [[Immutable alloc] initWithStr:str];
return copy;
}
तो, अगर मुझे सही लगता है, तो एआरसी स्थिति (1) और (2) को समझ लेगा और संदर्भों के लिए "+1" के बारे में सही निर्णय लेगा।
क्या मैं सही हूँ?
मुझे लगता है कि एआरसी मूल रूप से प्रत्येक लौटने वाली वस्तुओं का इलाज 'आवंट ~' और 'प्रति ~' के अपवादों के साथ स्वत: समाप्त हो जाती है। मैं एआरसी के तहत सभी लौटने वाली वस्तुओं का इलाज करता हूं, केवल '-रेरेन' और '-autorelease'd अर्थात् हैं। और बस आवंटन के लिए एक और '-retain' जोड़ता है और मामलों की प्रतिलिपि बनाता है। नतीजतन, एक बरकरार रखता है और एक autorelease समाप्त हो सकता है, और केवल एक बनाए रखा जाएगा ... – Eonil