1 存储属性 Stored Properties (只能用于类和结构体)
1 | // 描述整数的范围,且这个范围值在被创建后不能被修改. |
延迟存储属性: 第一次被调用的时候才会计算其初始值。 lazy var
(常量属性在构造过程完成之前必须要有初始值,因此无法声明成延迟属性)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16class DataImporter {
/*
DataImporter 是一个负责将外部文件中的数据导入的类。 这个类的初始化会消耗不少时间。
*/
var fileName = "data.txt"
// 这里会提供数据导入功能
}
class DataManager {
lazy var importer = DataImporter()
var data = [String]()
// 这里会提供数据管理功能
}
let manager = DataManager() // DataImporter 实例的 importer 属性还没有被创建
manager.data.append("Some data")
manager.data.append("Some more data")
manager.importer.fileName
2 计算属性Computed Properties (可用于类,结构体和枚举)
不直接存储值,而是提供一个getter和一个可选的setter,来间接获取和设置其他属性或变量的值。
1 | struct Point { |
3 属性观察器(Property Observers)
设置属性时(就算值不变),就会调用willSet
, didSet
1 | class StepCounter { |
4 全局变量和局部变量(Global and Local Variables)
计算属性和属性观察器所描述的功能也可以用于全局变量和局部变量
5 类型属性(Type Properties):用于某个类型所有实例共享的数据。(类似于其他语言的静态属性)
存储型类型属性是延迟初始化的。
标识符static可用在类、结构体、枚举、协议,class只用在类中。
1 | struct SomeStructure { |
playground文件在andyRon/LearnSwift