Swift - 在单例类中初始化?

Ale*_*y K 9 singleton swift

我有一个MyClass用于第三方sdk管理工作的单例类.在单身内部我有init方法.

我的问题是:init每当我从单身人士调用某些东西时调用方法,MyClass.shared.mymethod()或者为了调用init我必须调用var instance = MyClass()吗?

Luc*_*tti 23

init被称为仅第一次调用MyClass.shared

此时,实例将MyClass保存在shared静态常量中.

让我们考虑一下这个Singleton类

final class Singleton {
    static let shared = Singleton()
    private init() {
        print("Singleton initialized")
    }

    var count = 0
}
Run Code Online (Sandbox Code Playgroud)

现在让我们看看控制台的输出

在此输入图像描述

如您所见,Singleton initialized字符串只打印一次.这意味着init只被调用一次.

注意:当然我假设您的Singleton类的实现是正确的.

  • 有趣的是,类型属性默认是惰性的吗? (2认同)
  • 您打印(1,2 ..),而不是print(Singleton.shared.count)为什么? (2认同)