重複の可能性:
Objective-C では、self = [super init] が nil でないかどうかを確認する必要があるのはなぜですか?
私は Ob-C の初心者であり、「if ステートメント」でテストした結果、返される値が非 nil である理由を理解するのに苦労しています。
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
このメソッドは、最初に親イニシャライザを呼び出します。親の初期化子を実行すると、継承されたインスタンス変数が適切に初期化されます。親の init メソッドを実行した結果を自分自身に割り当てる必要があります。初期化子にはメモリ内のオブジェクトの場所を変更する権利があるためです (つまり、その参照が変更されます)。親の初期化が成功した場合、if ステートメントでテストされているように、返される値は非 nil になります。コメントが示すように、次のブロック内に、オブジェクトの独自のカスタム初期化コードを配置できます。これには、多くの場合、クラス内のインスタンス変数の割り当てと初期化が含まれます。
Stephen Kochan からの貼り付けコードとテキスト「Programming in Objective-C, Fourth Edition」