Objective-C中單例常見於[UIApplication sharedApplication].delegate。Swift通過類計算屬性+私有常量/結構體/派發實現線程安全單例。
class Singleton2 {
class var shared: Singleton2 {
struct Static {
static let instance = Singleton2() // 首次訪問shared時初始化
}
return Static.instance
}
private init() {}
}
特性 方式一 方式二 OC傳統 線程安全 ✅ 編譯器保證 ✅ 編譯器保證 dispatch_once 延遲初始化 ✅ 首次訪問 ✅ 首次訪問 ✅ 防外部實例化 private init()private init()無強制手段 代碼簡潔度 ⭐⭐⭐ ⭐⭐ ⭐ Objective-C 對比