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()
}
相关推荐
RickeyBoy2 小时前
解决 Swift Testing 中 DI 容器的竞态条件
ios
2501_915918414 小时前
苹果App Store上架审核卡住原因分析与解决方案指南
android·ios·小程序·https·uni-app·iphone·webview
开心就好20254 小时前
不依赖 Mac 也能做 iOS 开发?跨设备开发流程
后端·ios
开心就好20255 小时前
Windows 上传 IPA 到 App Store 的步骤讲解
后端·ios
for_ever_love__7 小时前
Objective- C学习: 手动内存管理
c语言·学习·ios·objective-c
风启新尘12 小时前
ios巨魔越狱
支持向量机·ios·智能手机
Digitally12 小时前
没有充电器,如何给 iPhone 充电?
ios·iphone
bcbnb12 小时前
基于Mach-O文件的动态库与静态库归属方案及API扫描实践
后端·ios
2501_9159214313 小时前
VSCode 写 Swift 运行到 iPhone?快蝎 IDE 开发实战体验
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
spencer_tseng13 小时前
anti-screenshot (Android + iOS)
android·ios