为什么Singleton捕获自己的实例?

时间:2019-06-13 10:19:00

标签: swift static singleton

我试图了解当我们在Singleton自己的类声明中创建Singleton对象的第一个实例时在较低级别上会发生什么。

据我了解,关键字Transform > Pivot Column允许标记的属性或方法在类的所有实例之间共享,我确定在这里我不能完全看到该角色或作用。

此外,当我们在编译/运行时考虑实例的创建时,这如何工作?

这是一个Singleton类声明的示例:

static

我知道该类及其属性将仅创建一次,并且对该类对象的任何引用都将指向内存中的同一点。我的困惑特别在于为什么我们要在其内部创建Singleton的第一个实例。

1 个答案:

答案 0 :(得分:2)

基本上static变量是始终可通过类本身访问的类变量。 我建议阅读更深入的static here

解释

通过在类内部包含一个包含类本身对象的静态变量,您可以确保在运行时已经存在该类的对象(或者至少在首次访问Person.instance时) )。 对于Swift中真正的singleton来说,必须使该类init的{​​{1}}像这样:

private

这样,您可以确保在任何给定时间实际上只存在一个对象(因此名为 public class Person { static let instance = Person() var name: String let age: Int private init() { self.name = "Alan Turing" self.age = 42 } } )。