Objective-C使用GCD 中的dispatch_once_t 可以保证里面的代码只被调用一次,以此保证单例在线程上的安全。
但是在Swift 中由于废弃了原有的Dispatch once方法,因此无法使用once 进行单例的创建。
我们可以使用struct 存储类型变量,并且使用let保证线程安全的方式
(1)方案1
- class Manager {
- class var sharedManager: Manager {
- struct Static {
- static let sharedInstance: Manager = Manager()
- }
- return Static.sharedInstance
- }
- }
(2)方案2
- class Manager {
- class var sharedManager: Manager {
- return sharedInstance
- }
- }
-
- private let sharedInstance = Manager()
(3)方案3
- class Manager {
- static let sharedInstance = Manager()
- }