Swift中的单例用法

Swift中的单例用法,swift,singleton,Swift,Singleton,我仍然对使用Swift有点困惑,希望有人能帮助我澄清我何时以及为什么要使用Swift。从我对Singleton的理解来看,它们是单类实体,这意味着如果我有类A,我在类B中创建了类A的共享实例,它只是对类B中类A的引用,因此如果我更改或修改引用类B中类A的对象,原始对象类不受影响,只有类B中的对象受影响 如果我想有一个类a和类B,并且在类B中创建一个对类a的直接引用,那么我所做的任何更改都会在类a中生效。该类是直接修改的,而不是引用该类的对象的实例 独生子女 看看这个单身班 final class

我仍然对使用Swift有点困惑,希望有人能帮助我澄清我何时以及为什么要使用Swift。从我对Singleton的理解来看,它们是单类实体,这意味着如果我有类A,我在类B中创建了类A的共享实例,它只是对类B中类A的引用,因此如果我更改或修改引用类B中类A的对象,原始对象类不受影响,只有类B中的对象受影响

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

独生子女 看看这个单身班

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

    var value = 0
}
它是如何工作的 由于初始值设定项已标记为
private
,因此无法(在定义该类的源文件之外)创建该类的多个实例

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

您可以从任何类调用
sharedInstance
任意次数,然后根据需要复制它。每个变量始终包含对
堆上分配的单例的唯一实例的引用

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

例子
Singleton是一种模式设计,其中一个类在所有上下文、应用程序等中只能实例化一次,因此您的对象实例是sameA Singleton,它是一个可以从应用程序中任何位置访问的类的全局实例。当该实例在一个地方发生更改时,它也会更改所有需要访问的其他实例。必须将
单例
类标记为
最终
,否则我们可以使用子类化和父类型转换来创建多个
单例
实例(因此使“没有办法”无效(在定义的源文件之外)创建多个实例…”以上语句),请参阅。即使这种解决方法显然是不好的做法,将
单例
标记为
最终
也会消除这样做的可能性。我想了解一下该图形,too@AlexanderMomchliov:嗨,这个软件是@appzYourLife它很漂亮:)祝你愉快。
let a = Singleton.sharedInstance
a.value = 1

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

print(a.value) // 2