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()
}