- 存储属性(Stored Properties)
- 计算属性(Computed Properties)
- 属性观察器(Property Observers)
- 全局变量和局部变量(Global and Local Variables)
- 类型属性(Type Properties)
计算属性可以用于类、结构体和枚举,存储属性只能用于类和结构体
存储属性(Stored Properties)
-
变量存储属性
var
-
常量存储属性
let
-
常量结构体属性
1
2
3
struct FixedLengthRange {
var firstValue: Int
let length: Int
let rangeOfFourItems = FixedLengthRange(firstValue: 0, length: 4)
- 延迟存储属性
lazy
计算属性(Computed Properties)
1
2
3
4
get {
}
set {
}
注意 必须使用 var 关键字定义计算属性,包括只读计算属性,因为它们的值不是固定的。let 关键字只用来声明常量属性,表示初始化后再也无法修改的值。
属性观察器(Property Observers)
- willSet 在新的值被设置之前调用
- didSet 在新的值被设置之后立即调用
注意
父类的属性在子类的构造器中被赋值时,它在父类中的 willSet 和 didSet 观察器会被调用,随后才会调用子类的观察器。在父类初始化方法调用之前,子类给属性赋值时,观察器不会被调用。
全局变量和局部变量(Global and Local Variables)
注意 全局的常量或变量都是延迟计算的,跟延迟存储属性相似,不同的地方在于,全局的常量或变量不需要标记lazy修饰符。 局部范围的常量或变量从不延迟计算。
类型属性(Type Properties)
使用关键字 static 来定义类型属性。在为类定义计算型类型属性时,可以改用关键字 class 来支持子类对父类的实现进行重写