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()
}
相关推荐
专一的黑猫10 小时前
写一个iPhone应用程序,要求可以输入名字,点击按钮后,会显示一段文字向输入的名字打招呼,例如输入“宝玉”,显示“你好,宝玉!”
ios·iphone
_瑞2 天前
深入理解灵动岛
前端·ios·app
黑科技iOS上架2 天前
分享一个开源的iOS应用AppIcon生成器
经验分享·ios
wabil3 天前
【LVGL】滑动切换页面的界面优化实践
开发语言·ios·swift
威武的花瓣3 天前
调用Page.RegisterAsyncTask()的异步页
ios·iphone
Digitally3 天前
5 种简易方法:摩托罗拉手机数据迁移至 iPhone 17
ios·智能手机·iphone
EricStone5 天前
VibeCoding工程流程学习二:iOS项目架构
ios·vibecoding
天桥吴彦祖7 天前
判断iOS如何监听手机屏幕是否锁屏
ios
敲代码的鱼8 天前
PDF 预览与签名批注写回 支持安卓 iOS 鸿蒙 UTS插件
android·前端·ios
时光足迹8 天前
uni-app 视频通话实战:康复师与患者视频问诊的 6 个致命 Bug 与解决方案
android·ios·uni-app