我以前使用过以下单例模式:
class Singleton {
class var sharedInstance : Singleton {
struct Static {
static let instance : Singleton = Singleton()
}
return Static.instance
}
}
当发布带有Swift 1.2的新Xcode beta时,我想尝试新的静态类属性和方法。所以我尝试了类似的东西:
class Singleton {
static let sharedInstance : Singleton = Singleton()
}
在使用它时查看调试器,似乎很多单例类的嵌套实例是由类常量创建的:
但是通过分配来看,似乎只创建了一个实例。我想这意味着它正常工作,但我没有看到第一种模式的相同行为。
答案 0 :(得分:4)
这里发生的事情是LLDB向您显示静态数据,就好像它是实例数据一样。
因为它是静态数据,所以它不存在"在实例中#34;正常实例数据的工作方式,这会导致LLDB读取它不应该读取的内存,并将其呈现给您,就好像它是有效的一样。
通常,调试器不应在实例中显示静态数据(比较等效的C ++和LLDB表示的方式)。
答案 1 :(得分:0)
您可以在swift 1.2 single ton implementation中验证您的代码是否正确。 没有必要声明Singleton。
static let sharedInstance = Singleton()