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()
}
相关推荐
嵌入式×边缘AI:打怪升级日志4 小时前
转换模块(十二):实现 RGB 转 RGB + 项目整合与上机实验
开发语言·ios·swift
唐诺4 小时前
IOS学习路线计划
ios
for_ever_love__4 小时前
UI学习:无限轮播视图
学习·ui·ios·objective-c
MonkeyKing4 小时前
iOS Block 底层深度解析:结构、变量捕获、copy逻辑与循环引用本质
ios
MonkeyKing5 小时前
iOS ARC 本质:__strong / __weak / __unsafe_unretained / __autoreleasing 深度解析
ios
humors2215 小时前
全平台日常使用的国外应用
android·ios·app·安卓·应用·国外
pop_xiaoli6 小时前
【iOS】锁的原理
ios·objective-c·cocoa
秋雨梧桐叶落莳7 小时前
iOS——MVC架构学习
学习·ui·ios·架构·mvc·objective-c
代码的小搬运工1 天前
UITableView
开发语言·ui·ios·objective-c