Swift中的单例用法

时间:2016-08-05 16:09:13

标签: swift singleton

我仍然对使用Swift感到困惑,并且希望有人可以帮助澄清我何时以及为什么要他们。根据我对Singleton的理解,它们是单个类实体,这意味着如果我有A类并且我在B类中创建了A类的共享实例,它只是对B中A类的引用,所以如果我改变或者修改引用B类中A类的对象,原始对象Class不受影响,只有B类中的对象是。

如果我想要A类和B类,并且在B类中创建对A类的直接引用,那么我所做的任何更改都会在A类中发生。直接修改该类,而不是引用该类的对象的实例。

1 个答案:

答案 0 :(得分:16)

的Singleton

看看这个单身人士课程

final class Singleton {
    static let sharedInstance = Singleton()
    private init() { }

    var value = 0
}

它是如何运作的

NO WAY (在定义它的源文件之外)创建此类的多个实例,因为初始化程序已标记为private

访问Singleton实例的唯一方法是使用sharedInstance,它确实返回唯一可用的实例。

您可以根据需要从任何课程中多次调用sharedInstance,然后根据需要复制它。每个变量都将始终包含对Heap上分配的Singleton的唯一实例的引用。

因此,您对sharedInstance所做的每项更改都将在任何地方共享。

enter image description here

实施例

let a = Singleton.sharedInstance
a.value = 1

let b = Singleton.sharedInstance
print(b.value) // 1
b.value = 2

print(a.value) // 2