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()
}
相关推荐
FreeBuf_1 小时前
苹果紧急发布iOS 15.8.7更新以防御“Coruna“漏洞利用工具包
macos·ios·cocoa
开心就好20253 小时前
移动应用上架到应用商店的完整指南:原理与详细步骤
后端·ios
wx_xsooop_wx5 小时前
iOS 被拒 4.3a Cocos【全面解读】
ios
00后程序员张5 小时前
使用克魔助手(Keymob)查看 iOS 设备日志与崩溃报告
android·macos·ios·小程序·uni-app·cocoa·iphone
iOS日常6 小时前
Xcode SPM 太慢/报错?代理 + 缓存修复
ios
2501_915918416 小时前
通过IPA 结构调整和资源指纹变化来处理 iOS 应用相似度问题
android·ios·小程序·https·uni-app·iphone·webview
泉木7 小时前
isa 指针、元类、继承链
ios·objective-c
ZZH_AI项目交付7 小时前
iOS 首页进度卡实战:最难的不是渐变进度条,而是状态边界
人工智能·ios·ai编程
泉木7 小时前
objc_class 结构体逐行解析
ios·objective-c
2501_915918418 小时前
网站抓包解析,掌握浏览器请求和 HTTPS 数据分析的流程
android·ios·小程序·https·uni-app·iphone·webview