「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]親クラスの初期化を無視するだけなので、正しくありません。これはバグの原因となる可能性があります。