他の方法で変数を設定するよりも良い習慣のように感じるという理由だけで、オブジェクトのカスタム初期化子を作成してきました。これらの初期化子では、通常、オブジェクトの変数を設定してから、メインのinitへの呼び出しを返します。
したがって、たとえば、UIViewControllerサブクラスでは、コードは次のようになります。
-(id)initWithValue:(int)val {
self.value = val;
return [self initWithNibName:nil bundle:nil];
}
ここvalue
で、はそのViewControllerサブクラスに属する整数であり、通常はそれよりも多くの値があります。
ただし、最近self = [self init...]
、クラスの現在のインスタンスが置き換えられ、そのインスタンスのselfが失われると考えたため、最初にselfを設定し始めました。だから、私は始めました:
-(id)initWithValue:(int)val {
self = [self initWithNibName:nil bundle:nil];
self.value = val;
return self;
}
その後、最近元のバージョンを確認したところ、すべてが正しく機能し、変更が不要であることがわかりました。
だから、私の質問はこれです:
- [super initWithNibName:bundle:]は何をするので、オブジェクトは作成されますが、元のオブジェクトは置き換えられませんか?
- 2つのバージョンの一方が他方よりも使用に優れていますか、それとも両方とも同等ですか?どちらかが良い場合、どちらを使用する必要がありますか?
よろしくお願いします!