NSTextFieldCell
ドキュメントに従って、 method をオーバーライドすることのみを目的として のカスタム サブクラスを作成しましたsetUpFieldEditorAttributes:
。
NSTextFieldCell
ドキュメントには、またはそのスーパークラスの初期化子については言及されていませんNSActionCell
が、ドキュメントにはNSCell
明示的に言及されています。
NSCell をサブクラス化するときは、指定されたすべての初期化子を実装する必要があります。これらのメソッドは、init、initWithCoder:、initTextCell:、initImageCell: です。
カスタム サブクラスでは、Cocoa クラスの明示的なオーバーライド ポイントをオーバーライドする以外は何もしていないので、スーパー クラスの実装のみを呼び出す 4(!) イニシャライザを作成する意味はありますか?
Objective-Cのメソッドの冗長な性質によりinit...
、これは実装のコード行、書き込み (およびその種のことを行う人々にとっては読み取り) および一般的に維持するコメントの数を 5 倍にします。
これを書くのにかかった時間内にこれらのメソッドを作成できたことはわかっていますが、単に super を呼び出すメソッドの存在が何か違いがあるのでしょうか?
追加するために編集:
すべての指定されたイニシャライザを実装する必要があると述べているドキュメントを読み間違えましたNSTextFieldCell
が、問題はまだ残っていますinit
.superを呼び出すだけの3つのイニシャライザ(継承チェーンの指定されたイニシャライザとしてどういうわけか姿を消しました)は本当に違いますか?