上下文
我有一个Singleton
,它应该在它的私有初始化器中执行一些设置逻辑。但是,此代码不会在应用程序启动时执行。
代码
class SomeViewModel: ObservableObject {
static let shared = SomeViewModel()
private init() {
fatalError() // Just to test whether the Code gets executed.
}
}
问题
- 应用程序不会因
Fatal Error
而崩溃,即使在执行初始值设定项时也会发生这种情况。为什么会发生这种情况
static let
是懒惰的。在第一次调用访问shared
属性之前,它不会被初始化。所以你的应用程序不会崩溃,除非你这样做:
let x = SomeViewModel.shared