フレームワーク開発者向けのヒントとテクニックに関するAppleのドキュメントを読んで、指定された初期化子に関する次のステートメントに出くわしました。
指定された初期化子は、スーパークラスのメソッドを呼び出すクラスのinitメソッドです
init
。(他の初期化子は、クラスによって定義されたメソッドを呼び出しinit
ます。)すべてのパブリッククラスには、1つ以上の指定された初期化子が必要です。
(強調が追加されました。)
私の理解に基づいて、そして実際、「指定された」という言葉の使用そのものに基づいて、クラスには指定された初期化子を1つだけ含める必要があります。ただし、ドキュメントによると、複数の指定された初期化子が受け入れられます。
2つ(またはそれ以上)の指定された初期化子があると仮定すると、それらの役割は、適切なオブジェクトの初期化を保証するために、スーパークラスの指定された初期化子を呼び出すことです。しかし、両方の指定された初期化子が同じスーパークラスの指定された初期化子を呼び出している場合、そもそも複数の必要性があったのはなぜですか?クラスをリファクタリングして、他のすべてのinit
メソッドを単一の指定された初期化子にファネルするべきではありませんか?
複数の指定された初期化子を必要とするユースケースまたはデザインパターンについて少し混乱していますか?