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()
}
相关推荐
TheNextByte18 小时前
如何在 iPad/iPhone 上删除语音邮件?
ios·iphone·ipad
TheNextByte19 小时前
如何修复iPhone短信消失问题?
ios·cocoa·iphone
二流小码农11 小时前
鸿蒙开发:独立开发者的烦恼之icon图标选择
android·ios·harmonyos
智先森zhi12 小时前
实战:将 Android 多Module应用迁移到 kmp+cmp
android·ios·kotlin
TheNextByte113 小时前
如何在没有iTunes的情况下重启/恢复出厂设置iPhone
ios·cocoa·iphone
芝加哥兔兔养殖场15 小时前
前端/iOS开发者必备工具软件合集
前端·ios
TheNextByte116 小时前
如何从 iPhone 仅传输喜爱的照片?
ios·iphone
m0_6410310516 小时前
iOS签名是什么?为什么苹果APP需要签名
经验分享·科技·ios·游戏程序
_pengliang17 小时前
react native expo 开发 ios经验总结
react native·react.js·ios
YJlio1 天前
1.7 通过 Sysinternals Live 在线运行工具:不下载也能用的“云端工具箱”
c语言·网络·python·数码相机·ios·django·iphone