这是场景。我有三个类:A、B和C。类A是 的子类B。类C需要将其实例变量之一传递给类A(我们称之为b)。我想确保它在C初始化时发生,A以确保我不会遇到任何b为零的情况。以下是其结构A和方式:B
class B {
var a: Type1
required init(a: Type) {
...
}
}
class A : B {
var b: Type2
...
}
Swift 规则规定必须在初始化时定义非可选或隐式展开的变量。但是,由于我必须实现 B 的初始化(我无法控制 B;由 Apple 提供)我不能保证,因为我不能向 A 的初始化程序添加额外的参数。
我想确保 A 被调用A(b)or A(a,b),但不是A(a),以确保 b 被初始化。我尝试寻找解决方案或考虑使用协议或扩展的解决方案,但我无法弄清楚。我得到的答案是通过这个答案,但它并没有真正做到我想要的。
所以我有两个问题(一个使另一个无效): 1. [显而易见的问题] 有解决方案吗?(我是否遗漏了一些非常明显的东西?) 2. 我是不是搞错了?我应该使用不同的模式吗?
谢谢!