單例模式需要滿足 整個程序的生命周期只能存在一個,所以
- 構(gòu)造器需要是
private
敲董, 保證外部無法調(diào)用構(gòu)造器 - 線程安全,保證只能有一個線程初始化
目前我發(fā)現(xiàn)較為好用的Swift版本單例模式寫好如下,像SDWebImage
的Swift版本Kingfisher
也是用下面這種方法初始化它的KingfisherManager
類蜜徽,然后在這個類里面維護(hù)緩存等。
class Singleton {
public static let sharedInstance = Singleton() //
private init() {}
}
- 定義成
let
之后就不能改變 - Swift 對類變量是
lazy
加載票摇,也就是在第一次訪問的時候初始化拘鞋。相當(dāng)于OC中的dispatch_once
。保證線程安全矢门。