当我覆盖该函数时noise,该函数将被新函数替换.但是当我用观察者覆盖属性时,旧值和新值都会被执行.
在操场上:
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)")
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
var oldTrain = Train()
bulletTrain.noise("tjoek tjoek") // Prints: "A train does: tjoek tjoek"
Run Code Online (Sandbox Code Playgroud)
但是当我对一个观察者的财产做同样的事情时:
在操场上:
class Foo {
var something: Int! {
didSet {
println("vroom")
}
}
}
class Bar: Foo {
override var something: Int! {
didSet {
println("toot toot")
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
var …Run Code Online (Sandbox Code Playgroud)