一 、 willSet & didSet 的介绍
属性观察器用于监控一个属性的变化(属性初始化除外),针对属性值的变化做出响应的处理。
##> 属性观察器有以下特点:
1、当属性发生变化时,就先触发 willSet ,然后触发didSet 。
2、当创建属性观察器的时候,必须指明属性的类别。否则,将会编译不能通过。
3、willSet可以带一个newName的参数。否则,newName默认命名为newValue。
4、didSet可以带一个oldName的参数,表示旧的属性,不带的话默认命名为oldValue。
5、属性初始化的时候,willSet和didSet 不被调用。
6、属性发生变化,变化后和原来一样则willSet和didSet 也被调用。
二、 willSet & didSet 的使用
1、 创建一个类,并使它的一个属性添加观察器
class CarSwift {
/**
车名
*/
var carName = "宝马"
/**
铁的价格
*/
var ironPrice :Double = 0.0
{
willSet{
print("铁涨价了!")
}
didSet{
carTotalPrice = carWeight * ironPrice
}
}
/**
车的重量
*/
var carWeight = 120.0
/**
车总价格
*/
var carTotalPrice :Double = 0.0
}
2、 对属性观察器的测试
/**
属性的监控测试
*/
let MyCar = CarSwift.init()
MyCar.ironPrice = 110.0
let MyCarPrice = MyCar.carTotalPrice
print("我的车的价格是:" + "\(MyCarPrice)")
其输出结果:
/*
输出:
铁涨价了!
我的车的价格是:13200.0
*/