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()
}
相关推荐
茶底世界之下17 小时前
灯塔照片怎么裁竖幅?用 Awaking 留住塔顶,收紧两侧环境
ios
庚鑫20 小时前
iOS 27 兼容放大模式下,keyboardFrame 与 UIScreen.bounds 的坐标差异
ios·objective-c
HEJOO921 小时前
iOS 高效绘图:从 Core Graphics 到 Metal 的实践指南
macos·ios·cocoa
HEJOO91 天前
iOS 性能优化全面详解
ios·性能优化·cocoa
ii_best1 天前
iOS 自动化脚本工具更新|按键精灵 适配 Relaxin(青霉素)越狱,兼容 iOS16~iOS26 主流越狱环境
ios·自动化·按键精灵
万年咸鱼1 天前
iOS 27 适配笔记
笔记·ios·cocoa
HEJOO91 天前
iOS Dark Mode 适配笔记
笔记·ios·cocoa
风雨_1 天前
Mac M3 使用 OrbStack 全新安装运行 EasyConnect 完整教程
ios
Coder_张三2 天前
iOS 26 适配
前端·ios·swift
用户38034165882972 天前
崩溃率从 0.3% 到 0.04%:我们做对的不是修 bug,是让每个崩溃只发生一次
ios·swift