Ich habe daran herumgebastelt, und ich habe mich gefragt, ob es Literatur zu diesem Thema gibt, oder irgendeine Art zu wissen, was das erwartete Verhalten ist. Hier ein Beispiel:Mischen von schnellen Objektbeobachtungsobjekten und Vererbung
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
Wenn diese läuft ich diese Ausgabe erhalten:
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
Es scheint, dass die willSet
in der üblichen Weise von Polymorphismus genannt wird, aber didSet
rückwärts genannt. Das ist irgendwie cool, aber wo ist dieses Verhalten dokumentiert? Ist ein Test, wie dies der einzige Weg, um es zu lernen?