दो परिदृश्यों को देखते हुए, कौन सा कोड सबसे अच्छा अभ्यास है और क्यों?Autorelease बनाम रिलीज
autorelease
loginButton = [[[UIBarButtonItem alloc] initWithTitle:@"Login"
style:UIBarButtonItemStylePlain
target:self
action:@selector(loginButtonClicked:)]
autorelease];
self.navigationItem.rightBarButtonItem = loginButton;
या
रिलीज
loginButton = [[UIBarButtonItem alloc] initWithTitle:@"Login"
style:UIBarButtonItemStylePlain
target:self
action:@selector(loginButtonClicked:)];
self.navigationItem.rightBarButtonItem = loginButton;
[loginButton release];
पर भेजा गया संदेश एक आईफोन जैसे कम मेमोरी डिवाइस पर, जब संभव हो, स्पष्ट रूप से रिलीज़ करना बेहतर होता है। यह अजीब EXC_BAD_ACCESS त्रुटियों को डिबगिंग भी आसान बनाता है, क्योंकि एक स्पष्ट रिलीज का मतलब है कि आप ऑब्जेक्ट के जीवनकाल पर नियंत्रण में हैं। –
@Alex, इस मामले में यह सचमुच कोई फर्क नहीं पड़ता - ऑब्जेक्ट सृजन के तुरंत बाद बनाए रखा जा रहा है। जो कुछ भी होने जा रहा है वह संदर्भ गणना एक द्वारा घट जाएगी ... कौन परवाह करता है अगर वह तत्काल या कुछ समय बाद होता है? –
यह केवल तभी फर्क नहीं पड़ता है जब आप स्वत: पुन: असाइन नहीं करते हैं। AutemleaseItem.rightBarButtonItem autorelease पूल जारी होने से पहले। – JeremyP