我正在以快速有效的方式学习Singleton模式来创建Singleton类,并找到了如下创建的最佳方法.
class SingletonClass{
static let sharedInstance = SingletonClass()
}
Run Code Online (Sandbox Code Playgroud)
由于我使用了该let语句,因此它是只读属性,并且必须是线程安全的,所以不需要dispatch_once(),因为目标C.And static 用于使sharedInstance变量作为class变量我猜.
但是,这如何保证整个应用程序中只创建了一个实例?我缺少一件小事吗?
Vat*_*not 24
如果要阻止对类进行实例化(有效地将使用限制为单例),则将初始化程序标记为private:
class SingletonClass {
static let shared = SingletonClass()
private init() {
// initializer code here
}
}
Run Code Online (Sandbox Code Playgroud)
wil*_*eal 10
什么保证它只创建一次是关键字静态.你可以参考这篇文章:https: //thatthinginswift.com/singletons/
希望有所帮助.
static关键字表示可以访问成员变量或方法,而无需对其所属的类进行实例化.简单来说,这意味着您可以调用方法,即使您从未创建过它所属的对象
进行私有初始化,例如:
final class Singleton {
// Can't init is singleton
private init() { }
//MARK: Shared Instance
static let sharedInstance: Singleton = Singleton()
//MARK: Local Variable
var emptyStringArray : [String] = []
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18241 次 |
| 最近记录: |