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()
}
相关推荐
黑科技iOS上架13 小时前
unity3D 应用AppStore4.3被拒怎么自查
ios·审核·unity3d混淆
用户380341658829714 小时前
FFmpeg 在 iOS 上的裁剪、集成与包体控制
ios·音视频开发
黑科技iOS上架15 小时前
Cocos应用App Store4.3被拒怎么自查
macos·ios·objective-c·cocoa·审核·ios混淆·cocos混淆
00后程序员张18 小时前
怎么用 Egret(白鹭引擎)打包 iOS 应用并上架 App Store?
android·ios·小程序·https·uni-app·iphone·webview
风雨_18 小时前
show-me + grill-me 结合使用总结
ios
Rudon滨海渔村2 天前
iPhone上使用“库乐队”设置mp3铃声
ios·iphone·mp3·m4r·铃声
秋雨梧桐叶落莳2 天前
【iOS】GCD内容整理
macos·ios·cocoa
Mr -老鬼2 天前
EasyClick iOS USB版:USB HID功能详解与实战指南
ios·easyclick·易点云测·ios自动化
思盛iOS签名上架2 天前
ipa企业签名闪退是什么原因?
游戏·ios·testfight