Я занимаюсь этим, и мне было интересно, есть ли какая-либо литература по этому вопросу или какой-либо способ узнать, каково ожидаемое поведение. Вот пример:Смешивание Swift Property Observers и Inheritance
class A {
var paused:Bool = false {
willSet { print("Class A willSet on paused called") }
didSet { print("Class A didSet on paused called") }
}
}
class B : A {
override var paused:Bool {
willSet { print("Class B willSet on paused called") }
didSet { print("Class B didSet on paused called") }
}
}
class C : B {
override var paused:Bool {
willSet { print("Class C willSet on paused called") }
didSet { print("Class C didSet on paused called") }
}
}
let testC = C()
testC.paused = true
Когда это работает я получаю этот выход:
Class C willSet on paused called Class B willSet on paused called Class A willSet on paused called Class A didSet on paused called Class B didSet on paused called Class C didSet on paused called
Кажется, что willSet
называется обычным способом полиморфизма, но didSet
называется в обратном направлении. Это классно, но где это поведение задокументировано? Является ли такой тест единственным способом его изучения?