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()
}
相关推荐
sweet丶15 小时前
iOS应用启动过程深度分析与优化实践
ios
largecode18 小时前
企业名称能在来电显示吗?号码显示公司名服务打通多终端展示
android·xml·ios·iphone·xcode·webview·phonegap
MonkeyKing18 小时前
iOS Core Animation 渲染架构详解:Render Server 与 Commit Transaction
ios
MonkeyKing18 小时前
iOS Auto Layout 原理详解:Cassowary 算法、性能问题与优化
ios
运维之美@19 小时前
Nginx性能优化(二):HTTP/2升级指南,让你的网站开启极速模式
ios·iphone
恋猫de小郭20 小时前
Flutter GenUI 0.9 和 A2UI 0.9 发布,全动动态 UI 支持,AI 在 App 里直出界面
android·flutter·ios
sakiko_20 小时前
Swift/UIkit学习笔记27-模块管理,发送位置信息
前端·笔记·学习·ios·swift·uikit
shadowcz0072 天前
苹果不卷AI了:iOS 27要让第三方模型“竞标“进系统
人工智能·ios
90后的晨仔2 天前
Combine 错误处理与恢复:构建健壮的应用防线
ios
90后的晨仔2 天前
Combine 多线程与调度器:掌控数据流的执行线程
ios