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 小时前
鸿蒙开发:web页面如何适配深色模式
android·ios·harmonyos
yuec13 小时前
iOS 26 你的 property 崩了吗?
ios·客户端
jiangmiao202415 小时前
IOS开发 Runloop机制
ios·objective-c
從南走到北16 小时前
JAVA国际版任务悬赏发布接单系统源码支持IOS+Android+H5
android·java·ios·微信·微信小程序·小程序
咕噜签名分发冰淇淋16 小时前
苹果ios安卓apk应用APP文件怎么修改手机APP显示的名称
android·ios·智能手机
游戏开发爱好者817 小时前
iOS 开发推送功能全流程详解 从 APNs 配置到上架发布的完整实践(含跨平台上传方案)
android·macos·ios·小程序·uni-app·cocoa·iphone
Larva18 小时前
iOS - 关于如何在编译时写入文件并在代码内读取文件内容
ios
胎粉仔1 天前
Objective-C 初阶 —— __bridge & __bridge_retained & __bridge_transfer
ios·objective-c
笑尘pyrotechnic1 天前
【OC】UIKit常用组件适配iOS 26
macos·ios·cocoa