在Swift中使用dispatch_once实现单例模式
大家好!我刚开始学习Swift,正在尝试为管理应用程序设置的类实现Singleton模式。在Objective-C中,我习惯使用`dispatch_once`来确保初始化以线程安全的方式只发生一次。以下是我之前做法的示例:
```objc
+ (instancetype)sharedInstance {
static MyClass *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[MyClass alloc] init];
});
return sharedInstance;
}
```
在Swift中,我在网上看到很多示例,但它们经常使用不同的方法:全局常量、`private init`、带有`static let`的结构体。让我困惑的是,在Swift 3+中`dispatch_once`已被声明为deprecated。如何在现代Swift中正确且安全地创建Singleton?我需要担心线程安全吗?为什么Apple建议放弃`dispatch_once`而使用其他机制?