小编Een*_*dje的帖子

覆盖属性观察者

当我覆盖该函数时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)

overriding properties swift didset

20
推荐指数
1
解决办法
1万
查看次数

标签 统计

didset ×1

overriding ×1

properties ×1

swift ×1