Swift-属性观察者(willSet和didSet)
属性观察者,类似于触发器.用来监视属性的除了初始化之外的属性变化,当属性值发生改变是可以对此作出响应.有如下特点
1,不仅可以在属性值改变后触发didSet,也可以在属性值改变前触发willSet。
2,给属性添加观察者必须要声明清楚属性类型,否则编译器报错。
3,willSet可以带一个newName的参数,没有的话,该参数默认命名为newValue。
4,didSet可以带一个oldName的参数,表示旧的属性,不带的话默认命名为oldValue。
5,属性初始化时,willSet和didSet不会调用。只有在初始化上下文之外,当设置属性值时才会调用。
6,即使是设置的值和原来值相同,willSet和didSet也会被调用
使用这两个方法十分简单,我们只要在属性声明的时候添加对应的代码块,就可以对设定的值和已经设置的值进行监听了,具体操作如下:
class MyClass {
var data: RadioModel! {
willSet {
self.data = newValue
}
didSet {
self.titleLabel.text = self.data.title
}
}
在oc语言中,使用mvc模式搭建界面时,在C(即controller)中,将请求回来的数据放到模型里面,然后写一个方法将该模型传到V(即View)层展示。在swift语言中,我们可以利用属性观察器的特性,同样的在C中对模型进行监测,从而在V层展示。
为了便于理解,我写了个小demo放到我的github上,想了解的可以下载。https://github.com/smallSmallWhite/propertyInspector