これがシナリオです。A、、、の 3 つのクラスがBありCます。クラスAは のサブクラスですB。クラスCは、そのインスタンス変数の 1 つをクラスに渡す必要がありますA(それを と呼びましょうb)。がnilである状況に遭遇しないようにするために、C初期化時にそれが発生することを確認したいと思います。との構造は次のとおりです。AbAB
class B {
var a: Type1
required init(a: Type) {
...
}
}
class A : B {
var b: Type2
...
}
Swift の規則では、オプションではない、または暗黙的にラップ解除されていない変数は、初期化時に定義する必要があると規定されています。ただし、B の init を実装する必要があるため (B を制御することはできません。Apple から提供されています)、A の初期化子に追加のパラメーターを追加できないため、それを保証することはできません。
A(b)A がorA(a,b)で呼び出されていることを確認したいのですがA(a)、 b が初期化されていることを確認します。解決策を探したり、プロトコルや拡張機能を使用した解決策を考えたりしましたが、わかりませんでした。私が答えにたどり着いたのはこの答えによるものですが、それは私が望むことを実際には行いません。
2 つの質問があります (一方は他方を無効にします): 1. [明らかなもの] これに対する解決策はありますか? (本当に明らかな何かが欠けているのでしょうか?) 2. 私はこれに間違ったアプローチをしていますか? 私が使用すべき別のパターンはありますか?
ありがとう!