首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Swift單例模式三種實現方式:從Objective-C遷移指南

     編輯:關於C語言

Swift單例模式三種實現方式:從Objective-C遷移指南

背景

Objective-C中單例常見於[UIApplication sharedApplication].delegate。Swift通過類計算屬性+私有常量/結構體/派發實現線程安全單例。

方式一:全局私有常量(最簡單)

class Singleton2 {
    class var shared: Singleton2 {
        struct Static {
            static let instance = Singleton2()  // 首次訪問shared時初始化
        }
        return Static.instance
    }
    private init() {}
}
  • 利用結構體靜態常量首次訪問才初始化
  • Swift結構體靜態屬性同樣保證線程安全
  • 比方式一更明確表達「單例實例屬於類內部」

方式三:dispatch_once 兼容舊代碼(Swift 3前)

特性方式一方式二OC傳統
線程安全✅ 編譯器保證✅ 編譯器保證dispatch_once
延遲初始化✅ 首次訪問✅ 首次訪問✅
防外部實例化private init()private init()無強制手段
代碼簡潔度⭐⭐⭐⭐⭐⭐


Objective-C 對比

  1. 上一篇文章:
  2. 下一篇文章:
欄目導航
Copyright © 程式碼之家 All Rights Reserved