Swift:属性观察器

简介:

1、简单介绍

属性观察器监控和响应属性值的变化,每次属性被设置值的时候都会调用属性观察器,甚至新的值和现在的值相同的时候也不例外。

可以为除了延迟存储属性之外的其他存储属性添加属性观察器,也可以通过重载属性的方式为继承的属性(包括存储属性和计算属性)添加属性观察器。

注意:

不需要为无法重载的计算属性添加属性观察器,因为可以通过 setter 直接监控和响应值的变化。

 

2、监测方式

可以为属性添加如下的一个或全部观察器:

  • willSet在设置新的值之前调用
  • didSet在新的值被设置之后立即调用

分析:

willset观察器会将新的属性值作为固定参数传入,在willSet的实现代码中可以为这个参数指定一个名称,如果不指定则参数仍然可用,这时使用默认名称

newValue表示。类似地,didSet观察器会将旧的属性值作为参数传入,可以为该参数命名或者使用默认参数名oldValue。

注意:

willSet和didSet观察器在属性初始化过程中不会被调用,它们只会当属性的值在初始化之外的地方被设置时被调用。

 

3、实现例子:

复制代码
class Student{
    var score:Int = 0{
        willSet{
           print("About to set score to \(newValue)")
        }
        didSet{
            if score > oldValue  {
                print("这次分数进步了 \(score - oldValue) scores")
            }
        }
    }
}
let student = Student()
student.score = 80
student.score = 90
student.score = 100
复制代码

打印结果:

复制代码
About to set score to 80
进步了 80 scores
About to set score to 90
进步了 10 scores
About to set score to 100
进步了 10 scores
复制代码

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/6241628.html ,如需转载请自行联系原作者
相关文章
|
3月前
|
存储 算法 安全
【Swift专题】聊聊Swift中的属性
属性是面向对象语言中非常基础的语法特性,我们讲属性,实际上就是讲与类本身或类实例关联的数据。在面向对象的语言中,类作为重要的数据结构会封装数据与函数,类中的函数我们通常称其为方法,而数据则就是属性。
40 1
|
7月前
|
存储 Swift
Swift属性包装器@propertyWrapper
Swift属性包装器@propertyWrapper
76 0
|
存储 监控 Swift
Swift实用小册09:存储属性、计算属性及属性观察器的使用
Swift实用小册09:存储属性、计算属性及属性观察器的使用
216 0
Swift实用小册09:存储属性、计算属性及属性观察器的使用
|
存储 编译器 Swift
Swift5.0 - day4-闭包、属性、方法、下标
Swift5.0 - day4-闭包、属性、方法、下标
287 0
Swift5.0 - day4-闭包、属性、方法、下标
Swift5.1—隐式解包可选值属性
Swift5.1—隐式解包可选值属性
211 0
|
存储
Swift5.1—延迟属性
Swift5.1—延迟属性
361 0
|
存储 监控
Swift5.1—属性观察器
Swift5.1—属性观察器
195 0
|
存储 Swift iOS开发
Swift5.1—类型属性
Swift5.1—类型属性
114 0
Swift5.1—类型属性
|
存储
Swift5.1——计算属性
Swift5.1——计算属性
137 0
Swift5.1——计算属性
|
存储 监控 Swift
Swift5.1—属性
Swift5.1—属性
109 0

相关课程

更多