属性观察者机制能让程序在属性被赋值时获得运行代码的机会,用来监视属性的除初始化之外的属性值变化,当属性值发生改变时能够对此作出响应

详细包含两个特殊的回调方法:

willSet(newValue):被观察的属性即将被赋值之前自己主动调用方法。

didSet(old Value):被观察的属性被赋值完毕之后自己主动调用该方法。

观察的范围

除了延迟存储属性之外的全部存储属性(包含实例存储属性或类型存储属性)。

可通过重载方式为继承得到的属性(包含存储属性和计算属性)加入

属性观察者

定义语法格式

[修饰符] var 存储属性名:属性类型[=初始值]{
willSet(newValue){
//属性即将被赋值之前自己主动运行的代码
}didSet(oldValue)
{
//属性被赋值完毕之后自己主动运行的代码
}
}

说明:

willSet:willSet部分可定义一段运行性代码,被观察的属性即将被赋值之前自己主动运行这块代码。

willSet部分能够显式制定一个形參名,该形參代表了该属性将被设置的新值。Swift也能够省略这个形參名。Swift将为该形參提供一个隐式形參名:newValue。

didSet:didSet部分可定义一段运行性代码,被观察的属性被成功赋值之后自己主动运行这块代码。didSet部分能够显式制定一个形參名,该形參代表了该属性将被改动之前的旧值。Swift也能够省略这个形參名,Swift将为该形參提供一个隐式形參名:oldValue。

  class Person {
var age:Int=0
{
willSet{
if(newValue<0 || newValue>200)
{
print("你输入的有误。非人类呀")
}
else{
print("即将成功")
} }
didSet{
print("已完毕,原来的年龄为\(oldValue)") }
}
}
var p=Person()
p.age=1000

最新文章

  1. Python 编码简单说
  2. 为什么axios请求接口会发起两次请求
  3. APP长时间后台运行
  4. Web-Nginx配置
  5. 一行命令搞定node.js 版本升级
  6. Redis学习笔记一:数据结构与对象
  7. #undef
  8. UIViewController卸载过程(ios6.0之前)
  9. 用MFC完成一个简单的猜数字游戏: 输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。
  10. JNDI support differences between Tibco EMS and ActiveMQ
  11. 关于PHP函数的操作
  12. C语言对函数操作的结果声明
  13. git基本用法
  14. Android摄像头照相机技术-android学习之旅(八)
  15. Ubuntu命令用法详解——curl命令
  16. 【BZOJ4007】[JLOI2015]战争调度(动态规划)
  17. 圆形进度条css3样式
  18. hadoop2.6.0高可靠及yarn 高可靠搭建
  19. 牛客网_Go语言相关练习_判断&amp;选择题(4)
  20. Django设计模式

热门文章

  1. jQuery学习笔记(4)-设置元素的属性和样式
  2. NodeJs学习记录(二)win7下 配置node连接oracle的环境
  3. JavaScript(九)正则表达式
  4. ProcessBar 与SeekBar进度条
  5. [Windows Server 2003] 初识Windows Server 2003
  6. Quartus 12的TimeQuest Timing Analyzer
  7. Python-Day07-图形用户界面和游戏开发
  8. centos 搭建pptp
  9. Script:shell脚本生成随机字符串
  10. mysql外键是多个id组成的字符串,查询方法