刚开始学习Swift用到了单例遇到问题,都怪基础没学好。
Swift不能定义类储存属性,如:
class var _sharedInstance: Singleton? = nil
//会提示Class variables not yet supported
但却可以定义结构储存属性
struct Singleton {
//储存属性
static var _sharedInstance: Singleton!
//计算属性
static var sharedInstance: Singleton {
if _sharedInstance == nil {
_sharedInstance = Singleton()
}
return _sharedInstance
}
}
于是找来网上的栗子:
全局常量
let _SharedInstance = Singleton()
class Singleton{
class var sharedInstance: Singleton {
return _SharedInstance
}
}
嵌套结构 swift的特性
class var sharedInstance2: Singleton{
struct Static {
static let instance = Singleton()
}
return Static.instance
}
线程安全 dispatch_once
class var sharedInstance3: Singleton {
struct Static {
static var onceToken: dispatch_once_t = 0
static var instance: Singleton? = nil
}
dispatch_once(&Static.onceToken) {
Static.instance = Singleton()
}
return Static.instance!
}