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()
}
相关推荐
吴Wu涛涛涛涛涛Tao6 分钟前
Flutter 弹窗解析:从系统 Dialog 到完全自定义
flutter·ios
kymjs张涛2 小时前
零一开源|前沿技术周报 #7
android·前端·ios
思考着亮4 小时前
15-错误处理
ios
思考着亮4 小时前
9.方法
ios
思考着亮5 小时前
6.结构体和类
ios
思考着亮5 小时前
7.闭包
ios
咕噜签名分发冰淇淋7 小时前
申请注册苹果iOS企业级开发者证书需要公司拥有什么规模条件
macos·ios·cocoa
2501_9159184117 小时前
Fiddler中文版全面评测:功能亮点、使用场景与中文网资源整合指南
android·ios·小程序·https·uni-app·iphone·webview
不知名It水手19 小时前
uniapp运行项目到ios基座
ios·uni-app·cocoa
Digitally19 小时前
[5种方法] 如何将iPhone短信保存到电脑
ios·iphone