我只是从Udacity学习东西中读取代码。教师制作一个实例变量sharedInstance
,其中struct
包含在class function
为什么我们不能简单地制作一个static var
?
class BugFactory() {
class func sharedInstance() -> BugFactory {
struct Singleton {
static var sharedInstance = BugFactory()
}
return Singleton.sharedInstance
}
}
为什么不推荐:
class BugFactory() {
static var sharedInstance = BugFactory()
}
答案 0 :(得分:5)
实际上建议使用你的第二个代码,因为swift版本有所改进。你应该考虑更多的事情是使用static let
声明你的单例对象并使初始化者私有
class Bar{
private init(){
// initialization
}
static let shared = Bar()
}
答案 1 :(得分:0)
您应该使用static let来创建sharedInstance / singleton。
还要确保使用私有init()方法,以便任何其他类不会无意中创建应该单独的类的另一个实例。
您正在引用的教程可能正在使用一些较旧的Swift版本。如果您有评论选项,那么视频会发表评论。