1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| 在Swift中,属性可以分为计算属性(Computed Properties)和存储属性(Stored Properties)。 此外,还有只读计算属性(Read-Only Computed Properties)和延迟存储属性(Lazy Stored Properties)等特殊类型。
1-存储属性(Stored Properties): 存储属性是直接存储在实例的内存中的属性。它们可以是常量属性(用 let 声明)或变量属性(用 var 声明)。 当创建一个新的实例时,存储属性会分配内存并设置初始值, 这些初始值可以通过构造函数参数进行设置,也可以在定义时给出默认值。
struct Person { var name: String // 存储属性 var age: Int // 存储属性 }
var person = Person(name: "Alice", age: 30)
2-计算属性(Computed Properties): 计算属性是通过 getter 和 optional setter 方法来间接获取和设置值的属性。 它们不直接存储值,而是提供一个 getter 方法来获取值,并可以提供一个可选的 setter 方法来设置值。 计算属性可以提供额外的计算逻辑,例如对其他存储属性的操作。
struct Circle { var radius: Double // 存储属性
var area: Double { // 计算属性 return Double.pi * radius * radius } }
3-只读计算属性(Read-Only Computed Properties): 只读计算属性只有 getter 方法,没有 setter 方法, 因此它们的值只能在 getter 方法中计算并返回,而不能被修改。 在计算属性的声明前加上 get 关键字,即可声明只读计算属性。
struct Circle { var radius: Double
var area: Double { // 只读计算属性 return Double.pi * radius * radius } }
4-延迟存储属性(Lazy Stored Properties): 延迟存储属性是指当属性首次被访问时才进行初始化的属性。 这种属性通常用于初始化需要复杂或者大量资源的属性, 可以延迟到实际需要时再进行初始化,以提高性能和节省资源。
class DataManager { lazy var data: [String] = { var data = [String]() // 加载数据的耗时操作 return data }() }
在这个示例中,data 属性是一个延迟存储属性,它在首次被访问时执行闭包并进行初始化。
|