Swift中的willSet和didSet apple文化
Swift中的willSet和didSet是属性观察器,用于监视和响应属性值的变化。
基本概念
- 属性观察器:
willSet和didSet是属性观察器,用于监视和响应属性值的变化。它们只能用于var声明的属性,而不能用于let常量。 - willSet:在属性的值被修改之前调用,可以使用
newValue来获取即将赋予该属性的新值。 - didSet:在属性的值被修改之后调用,可以使用
oldValue来获取修改前的旧值12。
使用场景和限制
- 使用场景:
willSet和didSet可以应用于存储属性和计算属性。它们可以在属性值即将被设置或已经被设置时执行一些自定义的逻辑。例如,可以在willSet中进行预处理操作,检查新值是否满足特定条件;在didSet中进行后处理操作,检查旧值是否满足特定条件,并执行一些额外的逻辑13。 - 限制:属性观察器不能用于计算属性。此外,属性观察器必须有一个初始值(例如nil),并且不能使用带有计算属性的属性观察器4。
示例代码
swiftCopy Code
struct Person { var name: String { willSet { print("willSet-\(newValue)") } didSet { print("didSet-\(oldValue)") } } init(name: String) { self.name = name } } var person = Person(name: "ios") person.name = "swift" // 输出: willSet-swift 和 didSet-ios
漫思
浙公网安备 33010602011771号