【问题标题】:Property observers and their behaviour财产观察者及其行为
【发布时间】:2016-07-26 10:52:53
【问题描述】:

我有一个示例类和一个 Int 类型的属性,如下所示:

class StepCounter {
    var totalSteps: Int = 0 {
        willSet(newTotalSteps) {
            print("about to set steps to \(newTotalSteps)")
        }
        didSet {
            if totalSteps > oldValue {
                print("Added \(totalSteps - oldValue) steps")
            }

        }
    }
}

现在,当我创建此类的一个实例并为我的 var totalSteps 分配一个数字时,如下所示:

let anObj = StepCounter()

anObj.totalSteps = 2000

我按预期得到了控制台输出:

about to set steps to 2000
Added 2000 seteps

但是当我执行anObj.totalSteps -= 1 时,我只得到willSet 输出说about to set steps to 1999 并且didSet 永远不会被执行。发生了什么以及为什么我没有执行 willSet print 语句?帮帮忙,谢谢。

【问题讨论】:

    标签: ios swift properties swift3


    【解决方案1】:

    在你的didSet 你有:

    if totalSteps > oldValue
    

    但是当你做anObj.totalSteps -= 1时,总步数不大于旧值!

    所以print 没有按预期执行。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-14
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多