Swift 单例模式:普通实现与 GCD 实现

Swift 单例模式实现

单例模式是一种常用的软件设计模式,用于确保一个类只有一个实例,并提供全局访问点。在 Swift 中,实现单例模式有多种方式,将介绍两种常见的实现方法:普通实现和 GCD 实现。

1. 普通单例实现

普通单例实现使用静态属性和私有初始化器来确保类的唯一性。

class Singleton {
    static let shared = Singleton()

    private init() {}
}

在上面的代码中:

  • shared 是一个静态属性,用于存储单例实例。
  • init() 是一个私有初始化器,防止外部实例化该类。

2. GCD 单例实现

GCD (Grand Central Dispatch) 单例实现利用了 GCD 的线程安全特性,确保在多线程环境下也能安全地创建和访问单例实例。

class SingletonGCD {
    static let shared = SingletonGCD()

    private init() {}

    static var sharedInstance: SingletonGCD {
        struct Static {
            static var onceToken: dispatch_once_t = 0
            static var instance: SingletonGCD? = nil
        }
        dispatch_once(&Static.onceToken) {
            Static.instance = SingletonGCD()
        }
        return Static.instance!
    }
}

在上面的代码中:

  • 使用 dispatch_once 函数确保初始化代码只执行一次。
  • Static 结构体用于存储单例实例和 dispatch_once_t 标记。

总结

介绍了两种常见的 Swift 单例模式实现方法:普通实现和 GCD 实现。开发者可以根据实际情况选择合适的实现方式。

docx 文件大小:88.63KB