Swift之单例

作者: 小羊爱学习 | 来源:发表于2022-06-14 14:03 被阅读0次

单例是一个在Cocoa 中很常见的模式了。对于一些希望能在全局方便访问的实例,或者在App 的生命周期中只应该存在一个的对象,我们一般都会使用单例来存储和访问。在Objective-C 中单例的公认的写法类似下面这样:

//使用GCD 中的dispatch_once_t 可以保证里面的代码只被调用一次,以此保证单例在线程上的安全。
+ (instancetype)sharedManager {
    static Object *obj = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        obj = [[Object alloc] init];
    });
    return obj;
}

在Swift 中由于废弃了原有的Dispatch once方法,因此无法使用once 进行单例的创建。
我们使用一个struct 来存储类型变量。并且我们使用一个更简单的保证线程安全的方式,那就是let。
我们使用一个struct 来存储类型变量。并且我们使用一个更简单的保证线程安全的方式,那就是let。

class Manager {
    class var sharedManager: Manager {
        struct Static {
            static let sharedInstance: Manager = Manager()
        }
        return Static.sharedInstance
    }
}

还有一种方法更受大家欢迎的做法。与上方的写法类似:

class Manager {
    class var sharedManager: Manager {
        return sharedInstance
    }
}

private let sharedInstance = Manager()

最后一种方法更受大家喜欢,也最简单。如果没有特别的需求,建议都使用这样的方式实现单例。

class Manager{
  static let sharedInstance = Manager()
}

相关文章

  • swift语法-14单例

    swift语法-14单例 OC中单例 Swift中单例 简写 Swift中最长用的方法

  • 单例模式的书写

    ARC OC 中的单例 根据OC单例 改写成 Swift 中的单例 OC调用swift,需要#import "单例...

  • iOS - 单例创建

    Swift创建单例 代码如下:Swift5 对应OC创建单例

  • 单例

    普通的 GCD单例 swift单例

  • iOS 单例

    Objective-C 单例宏 Swift 单例声明

  • Swift中的单例

    转战swift有几天了,接触到了swift中的单例,下面介绍一下swift中的单例: 仿照OC中的单例的写法,写一...

  • Swift之单例

    GitHub Demo: https://github.com/BaHui/BHSwifter 简介 单例是一种...

  • Swift之单例

    单例是一个在Cocoa 中很常见的模式了。对于一些希望能在全局方便访问的实例,或者在App 的生命周期中只应该存在...

  • 单例

    //单例 // Swift 1.2后,可以使用类变量 // Swift 1.2之前单例的写法 /* class M...

  • Swift的单例模式及如何处理并发访问

    Swift的单例模式 Swift有两种方式实现单例模式 1、全局常量 2、类型常量 处理单例模式的并发访问 1、多...

网友评论

    本文标题:Swift之单例

    本文链接:https://www.haomeiwen.com/subject/epdzmrtx.html