2017-02-25 62 views
0

做我做了一类单如下:单类的初始化水湿自动

class AccountManager 
{ 
    static let sharedInstance = AccountManager() 

    private init(){ 
     print("init is done if this message shows up") 
    } 
} 

而且我认为他的init方法将自动执行一次我启动应用程序,而不先在一些地方调用AccountManager.sharedInstance ,但实际上它不会除非特别先调用AccountManager.sharedInstance

这种行为是正常的还是我做错了什么?

+1

这很正常。单身人士必须在某处被创造。 – FredericP

回答

4

静态类型属性被懒惰地初始化(并且只有一次),即它在第一个访问例如初始化时被初始化。如果调用

let manager = AccountManager.sharedInstance 

AccountManager.sharedInstance.someMethod() 

雨燕提供没有机制在运行时自动执行代码。

在Objective-C中,您可以实现一个+ (void)load;方法,该方法在类加载到内存中时运行,但在Swift中不允许使用 。

+0

感谢您的决定性答案,@MartinR。 (关于另一个问题,我甚至没有听说过“main.Swift”:-)) – Fattie