【发布时间】:2018-04-12 21:56:59
【问题描述】:
使用游乐场。
我有以下结构:
struct Foo {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
我将其中的一个实例声明为属性观察者,name 的默认值为“James”,age 的默认值为 33:
var myFoo = Foo(name: "James", age: 33) {
willSet {
print("my foo will be: \(newValue)")
}
didSet {
print("my foo was: \(oldValue)")
}
}
尝试编辑实例的name 时:
myFoo.name = "John"
我可以在日志上看到:
我的 foo 将是:Foo(name: "John", age: 33)
我的 foo 是:Foo(name: "James", age: 33)
这是我的期望。但是,当将Foo 声明为类而不是结构:class Foo 并运行完全相同的代码时,日志上不会出现任何内容。
背后的原因是什么?
【问题讨论】:
标签: swift class struct property-observer