//: Playground - noun: a place where people can play

import Cocoa

var str = "Hello, playground"

定义Class类

测试类

swift代码:

class Test{
//定义一个变量属性
var name :String? = "Tom" {
// willSet{
// print("name_value-changeAfter:\(newValue)")
// }
// didSet{
// print("name_value-changeBefore:\(oldValue)")
// } //调换willSet和didSet两个方法的顺序
//看效果
didSet{
print("name属性值被改变前的value:\(oldValue)")
}
willSet{
print("name属性值将要变成:\(newValue)")
}
}
} let test = Test() test.name! = "Jason" //test.name! = "Jack" //test.name! = "张三" //test.name! = "李四"

运行结果:

name属性值将要变成:Optional("Jason")
name属性值被改变前的value:Optional("Tom")

/********************************************************************************************************

总结:

swift的属性观察者,

使用属性观察者,就是实时查看属性value的变化,很实用的一个东西

属性观察者提供了两个属性和方法

oldValue和newValue两个属性

willSet和didSet两个方法

willSet这个函数会在属性value改变之前被调用,在方法中可以使用newValue属性来查看属性将要接受的新值

didSet这个函数会在属性value改变之后被调用,在方法中可以使用oldValue属性来查看属性value被改变前的一个过期值

方法顺序的问题,

属性的value被改变前,willSet方法先执行,didSet方法才会执行,即使将didSet方法放在willSet方法的前面

*********************************************************************************************************/

最新文章

  1. Android -- 自动完成文本框(可以匹配多个值,并以,结尾)
  2. jquery刷新页面
  3. Java中使用JDBC
  4. [CentOS]添加删除用户
  5. (1)Underscore.js入门
  6. TCP建立连接、断开连接以及正常报文的报头和报位的大小
  7. Unity3D ShaderLab 基础的高光实现
  8. Codeforces Round #280 (Div. 2) C. Vanya and Exams 贪心
  9. Docker容器里时间与宿主机不同步
  10. CSS3 animation-fill-mode 属性
  11. ES6数组去重
  12. nodebeginer
  13. Spring源码:IOC原理解析(一)
  14. NOIP2017SummerTraining0726
  15. 绝世emacs配置for Ubuntu
  16. rmdir 命令详解
  17. ubuntu-18.04 安装zsh的方法步骤
  18. 31.C++-虚函数之构造函数与析构函数分析
  19. java map集合 --遍历
  20. 关于function和task的说明

热门文章

  1. http错误码大全?
  2. cocopods 安装与使用
  3. Windows下USB磁盘开发系列二:枚举系统中所有USB设备
  4. HBase完全分布模式安装
  5. github初体验
  6. HQL查询——聚集函数
  7. HTML标签显示在页面上
  8. JQ完成表格单元格顺序的上移下调
  9. 微信小程序-视图条件渲染
  10. 基于EasyUI的Web应用程序及过去一年的总结