निम्नलिखित संपत्ति परिभाषा को देखते हुए:ऑब्जेक्टिव-सी गुण और मेमोरी मैनेजमेंट
self.foo = [[MyObject alloc] init];
:
@property (nonatomic,retain) MyObject* foo;
निम्नलिखित कोड एक स्मृति रिसाव के कारण होता है?
ऐसा लगता है कि alloc कॉल में जुड़ जाता है जैसे 1 के लिए वस्तु पर गिनती बनाए रखने, तो बनाए रखने के अंदर संपत्ति सेटर 1. लिए अपना बजट बढ़ा लेकिन चूंकि प्रारंभिक गिनती 0 को कम कर कभी नहीं किया जाता है, तब भी जब वस्तु रहेंगे स्वयं जारी किया जाता है। क्या यह विश्लेषण सही है?
यदि हां, तो ऐसा लगता है जैसे मैं दो विकल्प है दिखता है:
self.foo = [[[MyObject alloc] init] autorelease];
जो प्रदर्शन कारणों से iPhone पर अनुशंसित नहीं है, या:
MyObject* x = [[MyObject alloc] init];
self.foo = x
[x release];
जो थोड़ा बोझिल है। क्या अन्य विकल्प हैं?
यह एक शानदार विकल्प है जो उदाहरण बनाते समय समय बचाता है। –