init内で障害が発生した場合は常に自分自身を解放する必要がありますか、それとも最初にインスタンス変数を初期化した場合にのみ解放する必要がありますか?
言い換えれば、このパターンは有効ですか?initメソッド内でselfを解放するべきではない場合がありますか、または制御フローが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;
}