क्या मुझे हमेशा इंटिट के अंदर विफलता होने पर स्वयं को छोड़ना चाहिए, या क्या मुझे ऐसा करना चाहिए यदि मैंने पहले इंस्टेंस वैरिएबल शुरू किया है?क्या मुझे हमेशा असफल इनिट विधियों के लिए स्वयं को जारी करना चाहिए?
इसे एक और तरीका रखने के लिए, क्या यह पैटर्न मान्य है? क्या ऐसा समय है जब मुझे एक इनिट विधि के अंदर स्वयं को रिहा नहीं करना चाहिए, या मुझे लगता है कि अगर नियंत्रण प्रवाह init में प्रवेश करता है, तो आत्म कम से कम 1 की गिनती है?
- (id)init
{
if ((self = [super init]) == nil)
{
[self release];
return nil;
}
//do some init stuff
if (somethingFailed)
{
[self release];
return nil;
}
return self;
}
आह मैक देव केंद्र दस्तावेज़ देखें, अब है कि आप इसे का कहना है तो स्पष्ट लगता। मैं थोड़ा फेंक दिया गया था क्योंकि मैं किसी ऑब्जेक्ट पर रिलीज का आह्वान कर रहा हूं कि मैंने आवंटन/कॉपी/नया इत्यादि नहीं लगाया था। – leo
हाँ, मूलभूत सिद्धांत यह है कि जो भी पहले प्रारंभ में एक त्रुटि का सामना करता है उसे आवंटित स्थान आवंटित किया जाना चाहिए, और फिर शून्य वापस आना चाहिए। चूंकि हर कोई शून्य हो जाता है, इसलिए उनके पास स्मृति को रिहा करने का कोई तरीका नहीं है, इसलिए स्मृति स्मृति रिसाव से बचने के लिए आपको स्वयं को रिहा क्यों करना चाहिए। –
समझ में आता है, धन्यवाद। – leo