【发布时间】:2019-06-13 10:19:00
【问题描述】:
我试图了解当我们在 Singleton 自己的类声明中创建 Singleton 对象的第一个实例时,在较低级别会发生什么。
据我了解,static 关键字允许标记的属性或方法在类的所有实例之间共享,我敢肯定它在这里的作用我没有完全看到。
此外,当我们考虑在编译/运行时创建实例时,这是如何工作的?
这是一个单例类声明的示例:
class Person {
static let details = Person()
var name = "Alan Turing"
let age = "42"
}
我知道类及其属性只会被创建一次,并且对类对象的任何引用都将指向内存中的同一点。我的困惑特别是为什么我们在其自身中创建单例的第一个实例。
【问题讨论】:
-
您还想在哪里创建这个实例?你可以在你想要的地方创建它
-
单例模式的重点是只有一个实例,并阻止创建更多实例。如果您允许在类之外创建实例,就不能阻止人们创建第二个或第三个实例,对吗?
-
另外它很懒,只有第一次调用它才会得到init
-
好点!我没有那样想。