Li *_*min 1 singleton initialization ios swift
我做了一个类单例如下:
class AccountManager
{
static let sharedInstance = AccountManager()
private init(){
print("init is done if this message shows up")
}
}
Run Code Online (Sandbox Code Playgroud)
我认为init一旦我启动应用程序,该方法就会自动实现,而无需AccountManager.sharedInstance先在某个地方调用,但实际上它不会,除非AccountManager.sharedInstance首先专门调用。
这种行为正常还是我做错了什么?
静态类型属性被延迟初始化(并且仅一次),即它在第一次访问时初始化,例如,如果您调用
let manager = AccountManager.sharedInstance
Run Code Online (Sandbox Code Playgroud)
或者
AccountManager.sharedInstance.someMethod()
Run Code Online (Sandbox Code Playgroud)
Swift没有提供在运行时自动执行代码的机制。
在 Objective-C 中,您可以实现一个+ (void)load;在类加载到内存中时运行的方法,这在 Swift 中是不允许的。
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |