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