使用 Swift 单例

Using the Swift Singleton

我有以下单例class:

class Singleton {
    static let sharedInstance = Singleton()
}

我在网上几乎找不到关于如何使用大量 swift 单例模式实现的信息。我之前在 Objective-C 的前一个应用程序中使用过它,但对我来说它似乎更直接。

例如,如果我想创建一个可以在应用程序中的任何地方使用的自定义对象数组,我将如何声明它,以及我将如何实现它。在我的 objective-C Singleton class 中,我在 class 文件中创建全局变量,然后像这样实现它:

singletonClass *mySingleton = [singletonClass sharedsingletonClass];
mySingleton.whatever = "blaaaah"

感谢您的帮助!另外,我是新来的,也是 Swift 的新手。

Swift 中有很多关于单例的信息。您是否以 Google 的实力看到了这篇文章? http://krakendev.io/blog/the-right-way-to-write-a-singleton

但要回答您的问题,您可以简单地定义您想要正常使用的任何内容。

class Singleton {
    static let sharedInstance = Singleton() // this makes singletons easy in Swift
    var stringArray = [String]()

}

let sharedSingleton = Singleton.sharedInstance

sharedSingleton.stringArray.append("blaaaah") // ["blaaaah"]

let anotherReferenceToSharedSingleton = Singleton.sharedInstance

print(anotherReferenceToSharedSingleton.stringArray) // "["blaaaah"]\n"

同意Andrew Sowers。请记住,您还必须像这样声明一个私有初始化程序:

class Singleton: NSObject {
    static let sharedInstance = Singleton()
    private override init() {}
}

没有这个私有 init(),其他对象可以创建自己的实例:

let mySingleton = Singleton()

现在有两个实例,Singleton.sharedInstancemySingleton - 不再是单例!我通过一个讨厌的错误发现了这一点,其中多个 "singletons" 正在触发计时器并造成严重破坏。