美文网首页
swift-属性观察者

swift-属性观察者

作者: GitArtOS | 来源:发表于2021-08-24 13:59 被阅读0次

属性观察者会观察并对属性值的变化做出回应。每当一个属性的值被设置时,属性观察者都会被调用,即使这个值与该属性当前的值相同。

你可以在如下地方添加属性观察者

  • 你定义的存储属性;
  • 你继承的存储属性;
  • 你继承的计算属性。

对于继承的属性,你可以通过在子类里重写属性来添加属性观察者。对于你定义的计算属性,使用属性的设置其来观察和响应值变化,而不是创建观察者。
你可以选择将这些观察者或其中之一定义在属性上:

  • willSet 会在该值被存储之前被调用。
  • didSet会在一个新值被存储后被调用。

如果你实现了一个 willSet 观察者,新的属性值会以常量形式参数传递。你可以在你的willSet 实现中为这个参数定义名字。如果你没有为它命名,那么它会使用默认的名字 newValue

同样,如果你实现了一个didSet观察者,一个包含旧属性值的常量形式参数将会被传递。你可以为它命名,也可以使用默认的形式参数名 oldValue 。如果你在属性自己的didSet 观察者里给自己赋值,你赋值的新值就会取代刚刚设置的值。

class StepCounter {
    var totalSteps: Int = 0 {
        willSet(newTotalSteps) {
            print("About to set totalSteps to \(newTotalSteps)")
        }
        didSet {
            if totalSteps > oldValue  {
                print("Added \(totalSteps - oldValue) steps")
            }
        }
    }
}
let stepCounter = StepCounter()
stepCounter.totalSteps = 200
// About to set totalSteps to 200
// Added 200 steps
stepCounter.totalSteps = 360
// About to set totalSteps to 360
// Added 160 steps
stepCounter.totalSteps = 896
// About to set totalSteps to 896
// Added 536 steps

相关文章

  • 浅谈swift中的属性观察者

    Swift-属性观察者(willSet和didSet) 属性观察者,类似于触发器.用来监视属性的除了初始化之外的属...

  • Swift属性观察方法willSet和didSet

    Swift-属性观察着(willSet和didSet) 属性观察者,类似于触发器.用来监视属性的除了初始化之外的属...

  • swift-属性观察者

    属性观察者会观察并对属性值的变化做出回应。每当一个属性的值被设置时,属性观察者都会被调用,即使这个值与该属性当前的...

  • swift-类属性

    了解属性之前,需要先了解前面的swift-类结构内容 - swift-类结构源码探寻[https://www.ji...

  • Swift-属性

    存储属性 在其最简单的形式中,存储属性是作为特定类或结构的实例的一部分存储的常量或变量。 存储的属性可以是变量存储...

  • Swift-属性

    属性 存储属性(Stored Property)类似于成员变量这个概念存储在实例的内存中结构体,类可以定义存储属性...

  • Swift-属性观察者(willSet&didSet)

    属性观察者,类似于触发器。用来监视属性的除初始化之外的属性值变化,当属性值发生改变时可以对此作出响应。有如下特点:...

  • Swift 只读、观察者、全局、类属性

    只读计算属性 属性观察者 全局变量 类型属性

  • Python观察者模式

    观察者模式,被观察物自身属性通知观察者。

  • 每天学一点Swift----面向对象上(六)

    九.观察者属性 1.为了让程序能在属性被赋值时获得执行代码的机会,Swift提供了属性观察者机制,*******属...

网友评论

      本文标题:swift-属性观察者

      本文链接:https://www.haomeiwen.com/subject/ggediltx.html