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()
}
相关推荐
2501_915921437 小时前
iOS开发环境搭建详解 Xcode 配置与快蝎轻量级工具选择
ide·vscode·macos·ios·个人开发·xcode·敏捷流程
_瑞8 小时前
试图教会你用 Xcode Instruments
前端·ios·xcode
2501_9159090614 小时前
iOS应用性能监控 Instruments工具与崩溃日志分析完整指南
android·ios·小程序·https·uni-app·iphone·webview
iOS开发上架哦1 天前
Android代码混淆与iOS加固技术详解
后端·ios
2501_915918411 天前
详解iOS App上架至App Store的全流程步骤与注意事项
android·macos·ios·小程序·uni-app·cocoa·iphone
库奇噜啦呼2 天前
【iOS】weak底层实现
macos·ios·cocoa
软泡芙2 天前
【IOS】 Swift Package Manager (SPM) 指南
网络·ios·swift
黑化旺仔2 天前
iOS - 计算器仿写
ios
zhaocarbon2 天前
WKWebView 拦截 POST/PUT方法 丢失body的问题解决
ios·xcode·webview
库奇噜啦呼2 天前
【iOS】NSOperation与NSOperationQueue
macos·ios·cocoa