刚开始学习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!
}
本文探讨了在Swift中使用单例模式时遇到的问题及解决方法,包括类变量与结构体的区别、全局常量的使用、嵌套结构的特性以及线程安全的实现方式。
261

被折叠的 条评论
为什么被折叠?



