Swift中跟实例相关的属性可以分为2大类
存储属性 和 计算属性
struct CirCle {
// 存储属性 相当于成员变量 存储在实例的内存中
var redius: Double
// 计算属性 相当于方法(函数) 不占内存
var diameter: Double {
set {
redius = newValue / 2
}
get {
return redius*2
}
}
}
结构体 类 能定义存储属性 枚举不能定义存储属性
枚举 结构体 类都可以定义计算属性
计算属性不能用let
创建 类或者结构体的实例时 必须为所有的存储属性设置一个合适的初始值
延迟存储属性
lazy var label: UILabel = {
let l = UILabel()
l.text = "sweeter"
l.font = UIFont.systemFont(ofSize: 10)
l.textColor = .red
}()
属性观察器
struct CirCle {
var radius: Double {
willSet {
print("willSet", newValue)
}
didSet {
print("didSet", oldValue)
}
}
}
var c = CirCle(radius: 10)
c.radius = 20
//willSet 20.0
//didSet 10.0
单例模式
class SingletonOne {
public static let sharedInstance = {
// ...
// ...
return SingletonOne()
}()
private init() {}
}