为了账号安全,请及时绑定邮箱和手机立即绑定

在Swift中使用willSet和didSet的目的是什么?

在Swift中使用willSet和didSet的目的是什么?

拉丁的传说 2019-07-29 14:36:04
在Swift中使用willSet和didSet的目的是什么?Swift有一个非常类似于C#的属性声明语法:var foo: Int {     get { return getFoo() }     set { setFoo(newValue) }}但是,它也有willSet和didSet行动。这些在分别调用setter之前和之后调用。考虑到你可以在setter中使用相同的代码,它们的目的是什么?
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

关键在于,有时候,您需要一个具有自动存储某些行为的属性,例如通知其他对象该属性刚刚更改。当你拥有的是get/时set,你需要另一个字段来保存值。使用willSetdidSet,您可以在修改值时执行操作,而无需其他字段。例如,在该示例中:

class Foo {
    var myProperty: Int = 0 {
        didSet {
            print("The value of myProperty changed from \(oldValue) to \(myProperty)")
        }
    }}

myProperty每次修改时都会打印其旧值和新值。只有吸气剂和二传手,我需要这样做:

class Foo {
    var myPropertyValue: Int = 0
    var myProperty: Int {
        get { return myPropertyValue }
        set {
            print("The value of myProperty changed from \(myPropertyValue) to \(newValue)")
            myPropertyValue = newValue        }
    }}

因此willSetdidSet代表了几行的经济,并且在现场列表中的噪音更少。


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 1225 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信