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

swift – 在更改类中的属性时,有没有办法让didSet工作?,第1张

概述我有一个类作为属性与属性观察者.如果我在该类中更改某些内容,是否有办法触发didSet,如示例所示: class Foo { var items = [1,2,3,4,5] var number: Int = 0 { didSet { items += [number] } }}var test: Foo = F 我有一个类作为属性与属性观察者.如果我在该类中更改某些内容,是否有办法触发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是值类型,而不是引用类型.

总结

以上是内存溢出为你收集整理的swift – 在更改类中的属性时,有没有办法让didSet工作?全部内容,希望文章能够帮你解决swift – 在更改类中的属性时,有没有办法让didSet工作?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1008572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存