加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

《从零开始学Swift》学习笔记(Day 33)――属性观察者

发布时间:2020-12-14 07:13:18 所属栏目:百科 来源:网络整理
导读:原创文章,欢迎转载。转载请注明:关东升的博客 为了监听属性的变化, Swift 提供了属性观察者。属性观察者能够监听存储属性的变化,即便变化前后的值相同,它们也能监听到。 属性观察者主要有以下两个: willSet :观察者在修改之前调用。 didSet :观察者

原创文章,欢迎转载。转载请注明:关东升的博客

为了监听属性的变化,Swift提供了属性观察者。属性观察者能够监听存储属性的变化,即便变化前后的值相同,它们也能监听到。

属性观察者主要有以下两个:

  • willSet:观察者在修改之前调用。

  • didSet:观察者在修改之后立刻调用。

属性观察者的语法格式如下:

面向对象类型类型名 {

...
var存储属性:属性数据类型=初始化值{
willSet(新值){//定义willSet观察者。“新值”是传递给willSet观察者的参数,它保存了将要替换原来属性的新值
...
}
didSet(旧值){//定义didSet观察者。“旧值”是传递给didSet观察者的参数,它保存了被新属性替换的旧值。
...
}
}
}


属性观察者的语法格式比计算属性要混乱。

属性观察者可以在类和结构体中使用,不能在枚举中使用。

示例代码如下:

classEmployee{
varno:Int=0
varname:String="Tony"{
willSet(newNameValue){//定义name属性的willSet观察者,newNameValue是由我们分配的传递新值的参数名
print("员工name新值:(newNameValue)")
}
didSet(oldNameValue){//定义name属性的didSet观察者,oldNameValue是由我们分配的传递旧值的参数名
print("员工name旧值:(oldNameValue)")
}
}
varjob:String?
varsalary:Double=0
vardept:Department?
}

structDepartment{
varno:Int=10{
willSet{//定义no属性的willSet观察者,注意这里没有声明参数,但是我们可以在观察者内部使用newValue
print("部门编号新值:(newValue)")
}
didSet{//定义no属性的didSet观察者,注意这里也没有声明参数,但是我们可以在观察者内部使用oldValue
print("部门编号旧值:(oldValue)")
}
}
varname:String="RESEARCH"
}

varemp=Employee()
emp.no=100
emp.name="Smith"

vardept=Department()
dept.no=30


上述代码运行结果如下:

员工name新值:Smith

员工name旧值:Tony

部门编号新值:30

部门编号旧值:10

欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

wKiom1bWTBnxL823AAAs2MBEZnc677.png

更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读