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()
}
相关推荐
用户38034165882979 分钟前
八个私有 SPM 包撑起六款 App:分支当版本、钻石依赖,和一次谁都没报错的失效
ios·swift
老李IT笔记1 小时前
远程取设备日志:iOS、tvOS 和 macOS 三端的同意方式不一样
macos·ios
茶底世界之下1 小时前
食物照片有点偏绿?用 Awaking 把色调往回调一点
ios
2601_966563521 小时前
分享3个 OpenWrt手机管理客户端 支持安卓+ios 中文开源免费无广告
ios·智能手机
普通人61 小时前
iPhone Duo 介绍
ios·iphone
2501_915921432 小时前
iOS应用从开发到上架App Store的完整步骤详解
android·ios·小程序·https·uni-app·iphone·webview
健了个平_2414 小时前
【iOS】关于传统竖屏 UIKit 项目如何简单适配 iPhone Duo 的第一版
ios·app·swift
iOS开发上架哦18 小时前
抓包怎么修改响应?响应头、响应体、脚本注入实操教程
后端·ios
开心就好202518 小时前
在 Xcode 中运行和调试单元测试的完整指南
后端·ios