如何在swift中创建单例对象

我正在快速有效地学习Singleton模式来创建一个Singleton类,并找出了如下创建的最佳方式。

class SingletonClass{
    static let sharedInstance = SingletonClass()
}

因为我使用let语句,它只读属性,并且必须是线程安全的,所以从Objective C开始不需要dispatch_once()。我使用static来使sharedInstance变量作为class变量。

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


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

希望有所帮助。

static关键字表示可以访问成员变量或方法,而不需要实例化它所属的类。 简而言之,这意味着您可以调用方法,即使您从未创建过它所属的对象


如果你想阻止你的类的实例化(有效地限制使用只有单例),那么你将初始化器标记为private

 class SingletonClass{
        static let shared = SingletonClass()
    private init()
        {
            // initializer code here
        }
    }

创建私有的init,例如:

final class Singleton {

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

    //MARK: Shared Instance

    static let sharedInstance: Singleton = Singleton()

    //MARK: Local Variable

    var emptyStringArray : [String] = []

}
链接地址: http://www.djcxy.com/p/78853.html

上一篇: How to Create Singleton Object in swift

下一篇: once) singleton freezes / locks in objective c