swift - Swift 1.2 中的单例模式

标签 swift

我以前使用过以下单例模式:

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()
}

在使用它的同时查看调试器,似乎很多单例类的嵌套实例都是由类常量创建的:

Screenshot of debugger

但是通过分配来看,似乎只创建了一个实例。我想这意味着它工作正常,但我没有看到与第一个模式相同的行为。

最佳答案

这里发生的是 LLDB 向您显示静态数据,就好像它是实例数据一样。

因为它是静态数据,所以它不像普通实例数据那样存在于“实例中”,这会导致 LLDB 读取它不应该读取的内存并将其呈现给您,就好像它是有效的一样。

一般来说,调试器不应该在实例中显示静态数据(比较等效的 C++ 和 LLDB 表示它的方式)。

关于swift - Swift 1.2 中的单例模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28619176/

相关文章:

IOS Swift,someString 的区别!与一些字符串?

swift - 解析 SDK Swift isParseReachable

ios - UISearchController 在结构中搜索结构数组

iOS 9.3 : An SSL error has occurred and a secure connection to the server cannot be made

ios - 通知 View 在swiftUI中单击警报确定按钮

ios - 使用 Swift 4.0 编译的模块无法在 Swift 4.0.1 中导入

swift - CALayer 和 Uiview

ios - 在传递选定按钮的单元格中有多个按钮将数据设置为单元格

ios - 使用 Xcode7 和 Swift 2 在 WebView 中查看 Parse PFFile PDF

ios - MailCore/MailCore2 库未加载 - IPv6 兼容性失败 - Swift