假设我有一个单例经理
class Manager {
static let sharedInstance = Manager()
var text: String {
didSet (value) { print("didSet \(value)") }
}
init () {
self.text = "hello"
}
}
如果我做
Manager.sharedInstance.text = "world"
文字仍然是“你好”
但如果我做两次,第二次就是世界
最佳答案
它工作正常。
你所经历的行为可以用 2 个事实来解释
事实 1
由于 Apple says didSet
(以及 willSet
)是 而不是 在 init
期间调用。
事实 2didSet
的参数确实引用了 旧值 ,所以你应该
value
重命名为 oldValue
。 text
print
所以从这
didSet (value) { print("didSet \(value)") }
对此
didSet (oldValue) { print("didSet \(text)") }
相反,在您的代码中,您正在打印旧值(已被覆盖的值)。
关于swift didSet 未在单例中调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34086699/