我做了一个单例类如下:
class AccountManager
{
static let sharedInstance = AccountManager()
private init(){
print("init is done if this message shows up")
}
}
我认为 init
方法会在我启动应用程序后自动执行,而无需先在某个地方调用 AccountManager.sharedInstance
,但实际上它不会执行,除非调用AccountManager.sharedInstance
特别是第一个。
这种行为是正常的还是我做错了什么?
最佳答案
静态类型属性是惰性初始化的(并且只有一次),即它在第一次初始化时被初始化 访问,例如如果你打电话
let manager = AccountManager.sharedInstance
或
AccountManager.sharedInstance.someMethod()
Swift 没有在运行时自动执行代码的机制。
在 Objective-C 中你可以实现一个 + (void)load;
类加载到内存时运行的方法,这是不允许的
在 Swift 中。
关于ios - 类单例初始化不能自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42453579/