在Swift中使用willSet和didSet的目的是什么?Swift有一个非常类似于C#的属性声明语法:var foo: Int {
get { return getFoo() }
set { setFoo(newValue) }}但是,它也有willSet和didSet行动。这些在分别调用setter之前和之后调用。考虑到你可以在setter中使用相同的代码,它们的目的是什么?
3 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
关键在于,有时候,您需要一个具有自动存储和某些行为的属性,例如通知其他对象该属性刚刚更改。当你拥有的是get
/时set
,你需要另一个字段来保存值。使用willSet
和didSet
,您可以在修改值时执行操作,而无需其他字段。例如,在该示例中:
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 } }}
因此willSet
,didSet
代表了几行的经济,并且在现场列表中的噪音更少。
- 3 回答
- 0 关注
- 1225 浏览
添加回答
举报
0/150
提交
取消