微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个类作为属性属性观察者.如果我在该类中更改某些内容,是否有办法触发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是值类型,而不是引用类型.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐