【发布时间】:2015-09-11 00:37:16
【问题描述】:
我正在以快速有效的方式学习单例模式来创建单例类,并找到了如下创建的最佳方式。
class SingletonClass{
static let sharedInstance = SingletonClass()
}
由于我使用了let 语句,它是只读属性并且必须是线程安全的,因此从Objective C 开始就不需要dispatch_once()。而static 用于制作sharedInstance 变量我猜是class 变量。
但这如何保证在整个应用程序中只创建一个实例?是我遗漏了一件小事吗?
【问题讨论】:
-
你认为这个类有多少个副本(相对于这个类的objects)?
-
这个类的一个副本......但我可以在很多地方以 SingletonClass.sharedInstance 的形式访问它......
-
您是否建议以某种方式访问它会产生更多副本?
-
可以创建多个 singletonclass 实例,但是 sharedInstance 只能创建一次。
-
@copeME 它是一个不可变的静态变量。一旦它被创建,它就不能被重新分配,因为它是用 let 创建的。由于它是一个静态变量,所以它与类相关联,而不是类的实例。