使用Swift Singleton

问题描述 投票:1回答:2

我有以下Singleton类:

class Singleton {
    static let sharedInstance = Singleton()
}

我在网上很少发现如何使用Singleton模式的众多快速实现。我之前在Objective-C中使用过以前的应用程序,但对我来说它似乎更直接。

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

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

我很感激帮助!我也是新来的,也是Swift的新手。

swift singleton shared
2个回答
4
投票

Swift中有很多关于单身人士的信息。你有没有用你的谷歌实力来看这篇文章? 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"

0
投票

同意Andrew Sowers。请记住,您还必须声明一个这样的私有初始值设定项:

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

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

let mySingleton = Singleton()

现在有两个实例,Singleton.sharedInstance和mySingleton - 不再是单例!我发现这是一个令人讨厌的错误,其中多个“单身人士”正在解雇定时器并造成严重破坏。

© www.soinside.com 2019 - 2024. All rights reserved.