commonly accepted Singleton pattern for Swift在类变量/ type属性中使用Struct。
而不是:
class MySingleton {
class var sharedInstance: MySingleton {
struct Singleton {
static let instance = MySingleton()
}
return Singleton.instance
}
}
为什么我们不这样做:
class MySingleton {
class var sharedInstance: MySingleton {
let instance = MySingleton()
return instance
}
}
如果这是一个非常愚蠢的问题,请道歉。但是,不要利用常量的线程安全性和let
?
答案 0 :(得分:2)
通过您的实施,' sharedInstance'每次调用它都不是单例因素,它会创建MySingleton的新实例。并且,要创建一个静态变量,您必须将它放在struct o enums中,否则,您将收到编译器错误