iOS8 + Swift:创建一个真正的单例类

Dar*_*per 4 ios swift

我正在Swift中创建一个单例类,如下所示:

class SingletonClass {

    class var sharedInstance: SingletonClass {
        struct Singleton {
            static let instance = SingletonClass()
        }

        return Singleton.instance
    }


    var a: Int?
    var b: Int?
    var c: Int?
}
Run Code Online (Sandbox Code Playgroud)

这允许我从任何地方访问共享实例:

SingletonClass.sharedInstance
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但它并不能使这个实例成为整个系统中唯一可能的实例,这就是单身人士所关注的.
这意味着我仍然可以创建一个全新的实例,例如:

let DifferentInstance: SingletonClass = SingletonClass()
Run Code Online (Sandbox Code Playgroud)

并且共享实例不再是唯一的实例.

所以我的问题是:在Swift中有没有办法创建一个真正的单例类,其中只有一个实例可以在系统范围内进行?

dre*_*wag 14

只需将初始化程序声明为私有:

private init() {}
Run Code Online (Sandbox Code Playgroud)

现在只能在同一个文件中创建新实例.