Должен ли я всегда освобождать себя, когда в init происходит сбой, или я должен делать это только в том случае, если сначала я инициализировал переменные экземпляра?
Другими словами, действителен ли этот шаблон? Есть ли время, когда я не должен выпускать self внутри метода init, или я должен предположить, что если поток управления входит в init, self имеет хотя бы счет сохранения 1?
- (id)init
{
if ((self = [super init]) == nil)
{
[self release];
return nil;
}
//do some init stuff
if (somethingFailed)
{
[self release];
return nil;
}
return self;
}