我以前使用过以下单例模式:
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()
}
在使用它的同时查看调试器,似乎很多单例类的嵌套实例都是由类常量创建的:
但是通过分配来看,似乎只创建了一个实例。我想这意味着它工作正常,但我没有看到与第一个模式相同的行为。
最佳答案
这里发生的是 LLDB 向您显示静态数据,就好像它是实例数据一样。
因为它是静态数据,所以它不像普通实例数据那样存在于“实例中”,这会导致 LLDB 读取它不应该读取的内存并将其呈现给您,就好像它是有效的一样。
一般来说,调试器不应该在实例中显示静态数据(比较等效的 C++ 和 LLDB 表示它的方式)。
关于swift - Swift 1.2 中的单例模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28619176/