Swift创建单例

Objective-C使用GCD 中的dispatch_once_t 可以保证里面的代码只被调用一次,以此保证单例在线程上的安全。

但是在Swift 中由于废弃了原有的Dispatch once方法,因此无法使用once 进行单例的创建。

我们可以使用struct 存储类型变量,并且使用let保证线程安全的方式

(1)方案1

Swift 复制代码
class Manager {
    class var sharedManager: Manager {
        struct Static {
            static let sharedInstance: Manager = Manager()
        }
        return Static.sharedInstance
    }
}

(2)方案2

Swift 复制代码
class Manager {
    class var sharedManager: Manager {
        return sharedInstance
    }
}

private let sharedInstance = Manager()

(3)方案3

Swift 复制代码
class Manager {
    static let sharedInstance = Manager()
}
相关推荐
唐诺2 小时前
【无标题】
ios·属性包装器·wrappers
测试员周周10 小时前
【Appium 系列】第14节-断言与验证 — Validator 的设计
android·人工智能·python·功能测试·ios·单元测试·appium
2501_9160088915 小时前
Mac 上生成 AppStoreInfo.plist 文件,App Store 上架
android·macos·ios·小程序·uni-app·iphone·webview
人月神话-Lee16 小时前
【图像处理】高斯模糊——最优雅的模糊算法
图像处理·人工智能·算法·ios·ai编程·swift
@大迁世界16 小时前
iPhone 18e,可能不再“低一档”
ios·iphone
Daniel_Coder17 小时前
iOS Widget 开发-20:从旧版 API 迁移到 iOS 17+ 现代 Widget
ios·swift·widget·widgetcenter
Daniel_Coder18 小时前
iOS Widget 开发-19:Widget 调试与单元测试
ios·单元测试·swift·widget·widgetcenter
我是谁的程序员1 天前
Mac 上生成 AppStoreInfo.plist 文件,App Store 上架
后端·ios
sweet丶1 天前
微信Matrix 卡顿监控原理梳理与图解
ios