「init」メソッドをオーバーライドしない場合、initファミリメソッド[ self init ]
との間で何が違うのだろうか
。self = [ super init ]
そして、なぜ人々は通常self = [ super init ]
initファミリーメソッドで使用するのですか?
「init」メソッドをオーバーライドしない場合、initファミリメソッド[ self init ]
との間で何が違うのだろうか
。self = [ super init ]
そして、なぜ人々は通常self = [ super init ]
initファミリーメソッドで使用するのですか?
[ self init ]
自己クラスを初期化していることを意味します。
と
self = [ super init ]
スーパークラスを初期化することを意味し、返されるアドレス/メモリ位置はセルフクラスに設定されます。
人々はself = [ super init ]
までのすべての親クラスに使用するNSObject
ので、これを行うことは非常に重要です
普段 if (self = [ super init ]) {... return self;}
は万が一に備えて使っself == nil
ていますが、こんなことは一度もありません
[self init]
親クラスの初期化を無視するだけなので、正しくありません。これはバグの原因となる可能性があります。