Override property observer
Wenn ich die Funktion überschreibenoise
, die Funktion wird durch die neue ersetzt. Wenn ich jedoch eine Eigenschaft mit einem Beobachter überschreibe, werden sowohl der alte als auch der neue Wert ausgeführt.
uf dem Spielplatz:
class Vehicle {
func noise(sound: String) {
println("Vehicle sound sounds like \(sound)")
}
}
class Train: Vehicle {
override func noise(sound: String) {
println("A train does: \(sound)")
}
}
Ausgabe
var oldTrain = Train()
bulletTrain.noise("tjoek tjoek") // Prints: "A train does: tjoek tjoek"
Aber wenn ich dasselbe mit einer Eigenschaft mit einem Beobachter mache:
uf dem Spielplatz:
class Foo {
var something: Int! {
didSet {
println("vroom")
}
}
}
class Bar: Foo {
override var something: Int! {
didSet {
println("toot toot")
}
}
}
Ausgabe
var foobar = Bar()
foobar.something = 3 // Prints: "vroom" & "toot toot"
Wie soll ich also eine Eigenschaft mit einem Beobachter überschreiben und verhindern, dass die alten Werte ebenfalls ausgeführt werden?