Avatar ·

在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`而使用其他机制?