15

独自のカスタム tableViewCell を作成していたところ、次のエラーが表示されました。

「必要な」初期化子「init(coder:)」は、「UITableViewCell」のサブクラスによって提供される必要があります

私はそれを調べましたが、明らかにそれも実装する必要があります。しかし、これにより、必要な初期化子と指定された初期化子について混乱が生じました

アップルのドキュメントは次のように述べています。

必要な初期化子:

クラス初期化子の定義の前に必要な修飾子を記述して、クラスのすべてのサブクラスがその初期化子を実装する必要があることを示します。

指定された初期化子

指定された初期化子は、クラスの主要な初期化子です。指定されたイニシャライザは、そのクラスによって導入されたすべてのプロパティを完全に初期化し、適切なスーパークラス イニシャライザを呼び出して、スーパークラス チェーンの初期化プロセスを続行します。

次の記述は正しいですか。

  • 必須イニシャライザは常に指定イニシャライザです
  • 指定されたすべての初期化子が必須の初期化子であるとは限りません
  • クラスは必要な初期化子を 1 つしか持つことができませんが、指定された初期化子を複数持つことができますか?

そうは言っても、私はまだそれらの機能の違いを完全には理解していません。

4

1 に答える 1