gpt4 book ai didi

swift - 有没有办法让 didSet 在更改类中的属性时工作?

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:57 24 4
gpt4 key购买 nike

我有一个带有属性观察器的类作为属性。如果我更改了那个类中的某些内容,是否有办法触发 didSet,如示例所示:

class Foo {
var items = [1,2,3,4,5]
var number: Int = 0 {
didSet {
items += [number]
}
}
}

var test: Foo = Foo() {
didSet {
println("I want this to be printed after changing number in test")
}
}

test.number = 1 // Nothing happens

最佳答案

没有任何反应,因为观察者在 test 上,它是一个 Foo 实例。但是您更改了 test.number,而不是 test 本身。 Foo 是一个类,而一个类是引用类型,因此它的实例是就地可变的。

如果您想查看日志消息,请将 test 自身 设置为不同的值(例如不同的 Foo())。

或者,将 println 语句添加到 other didSet,即您已经在 Foo 的 number 属性。

或者,使 Foo 成为一个结构体而不是一个类;更改结构属性替换结构,因为结构是值类型,而不是引用类型。

关于swift - 有没有办法让 didSet 在更改类中的属性时工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29453735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com