码迷,mamicode.com
首页 > 其他好文 > 详细

存储型变量监视器和属性监视器willset与didset

时间:2015-01-16 16:18:06      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

可以用willset和didset监视器来声明一个存储型变量或属性。

var num= 0 {
  willSet(setter name) {

    //do something here
  
    }
  didSet(setter name) {

       //do something here
    }
}    

当变量或属性的值被改变时,willset和didset监视器提供了一个监视方法(适当的回应)。 监视器在变量或属性第一次初始化时不会被运行,只有在值被外部改变时才会被运行。

willset监视器只有在变量或属性值被改变之前运行。新的值作为一个常量经过willset监视器,因此不可以在 willset语句中改变它。didset监视器在变量或属性值被改变后立即运行。和willset监视器相反,为了以防止你仍然 需要获得旧的数据,旧变量值或者属性会经过didset监视器。这意味着,如果你在变量或属性自身的didiset监视器语句中设置了一个值,你设置的新值会取代刚刚在willset监视器中经过的那个值。

在willset和didset语句中,setter名和圆括号的语句是可选的。如果你写了一个setter名,它就会作为willset和didset的参数被使用。如果你不写setter名, willset监视器初始名为newvalue,didset监视器初始名为oldvalue。

当你提供一个willset语句时,didset语句是可选的。同样的,在你提供了一个didset语句时,willset语句是可选的。

存储型变量监视器和属性监视器willset与didset

标签:

原文地址:http://www.cnblogs.com/yaosuc/p/4228751.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!