swift – 在更改类中的属性时,有没有办法让didSet工作?
发布时间:2020-12-14 04:45:32 所属栏目:百科 来源:网络整理
导读:我有一个类作为属性与属性观察者.如果我在该类中更改某些内容,是否有办法触发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 b
我有一个类作为属性与属性观察者.如果我在该类中更改某些内容,是否有办法触发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 解决方法
没有任何事情发生,因为观察者正在测试,这是一个Foo实例.但你改变了test.number,而不是测试自己. Foo是一个类,类是引用类型,因此它的实例是可变的.
如果要查看日志消息,请将test本身设置为其他值(例如,不同的Foo()). 或者,将println语句添加到另一个didSet,这是你已经在Foo的number属性上获得的. 或者,使Foo成为结构而不是类;更改struct属性会替换struct,因为struct是值类型,而不是引用类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |