如何在swift中创建Singleton对象

19 singleton ios swift

我正在以快速有效的方式学习Singleton模式来创建Singleton类,并找到了如下创建的最佳方法.

class SingletonClass{
    static let sharedInstance = SingletonClass()
}
Run Code Online (Sandbox Code Playgroud)

由于我使用了该let语句,因此它是只读属性,并且必须是线程安全的,所以不需要dispatch_once(),因为目标C.And static 用于使sharedInstance变量作为class变量我猜.

但是,这如何保证整个应用程序中只创建了一个实例?我缺少一件小事吗?

Vat*_*not 24

如果要阻止对类进行实例化(有效地将使用限制为单例),则将初始化程序标记为private:

class SingletonClass {

    static let shared = SingletonClass()

    private init() {
        // initializer code here
    }
}
Run Code Online (Sandbox Code Playgroud)


wil*_*eal 10

什么保证它只创建一次是关键字静态.你可以参考这篇文章:https: //thatthinginswift.com/singletons/

希望有所帮助.

static关键字表示可以访问成员变量或方法,而无需对其所属的类进行实例化.简单来说,这意味着您可以调用方法,即使您从未创建过它所属的对象


Yan*_*eph 5

进行私有初始化,例如:

final class Singleton {

    // Can't init is singleton
    private init() { }

    //MARK: Shared Instance

    static let sharedInstance: Singleton = Singleton()

    //MARK: Local Variable

    var emptyStringArray : [String] = []

}
Run Code Online (Sandbox Code Playgroud)