前端之家收集整理的这篇文章主要介绍了
Swift回忆录-属性,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Swift回忆录-属性
存储属性:存储在特定类或结构体实例里的一个常量或变量
延迟存储属性 :当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 lazy 来标示一个延迟存储属性。
例:
- class score{
-
- var totalscore : Int?
- }
-
- class Student{
-
- let name : String? = nil
- var num : Int?
-
- lazy var score = score()
- }
延迟存储属性必须声明为变量(var
),因为属性的初始值可能在实例构造完成之后才会得到,而常量属性在构造过程完成之前必须要有初始值,因此无法声明成延迟属性
计算属性:直观点来说就是给属性提供一个 getter 和一个可选的 setter,来间接获取和设置其他属性或变量的值
例:
- class Student{
-
- var core : Int = 0
-
- var totalscore : Int {
-
- get{
- return core + 100
- }
-
- /** set(newscore){ core = newscore }**/
-
- set{
- core = newValue
- }
- }
- }
-
- var stu = Student()
- stu.core = 90
- print(stu.totalscore)
- stu.totalscore = 60
- print(stu.core)
备注-1 :如果计算属性的 setter 没有定义表示新值的参数名,则可以使用默认名称 newValue。
只读计算属性
只读计算属性 : 只有 getter 没有 setter 的计算属性
例:
- class Student{
-
- var core : Int = 0
-
- /** 备注-2 var totalscore : Int { get{ return core + 100 } } **/
- var totalscore : Int {
- return core + 100
- }
- }
-
- var stu = Student()
- stu.core = 90
- print(stu.totalscore)
备注-2 :只读计算属性的声明可以去掉 get 关键字和花括号
属性观察器 : 作用于监控和响应属性值的变化,Swift中提供了两个观察器:
willSet
:新的值被设置之前调用
didSet
:新的值被设置之后立即调用
willSet 观察器会将新的属性值
作为常量参数传入,如果不为该参数指定名称,可使用默认名称newValue
同样,didSet观察器会将旧的属性值
作为参数传入,如果不为该参数指定名称,可使用默认名称oldValue
例:
- class Student{
-
- var totalscore : Int = 10{
-
- willSet(newTotalscore){
- print("willSet:\(newTotalscore)")
- }
-
- didSet{
- print("didSet:\(oldValue)")
- }
- }
- }
-
- var stu = Student()
- stu.totalscore = 100
- print(stu.totalscore)