这是场景。我有三个类: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. 我是不是搞错了?我应该使用不同的模式吗?
谢谢!