Swift - 在单例类中初始化?

标签 swift singleton

我有一个单例类 MyClass 用于与第三方 sdk 的管理工作。在单例中,我有 init 方法。

我的问题是:每次我从像 MyClass.shared.mymethod() 这样的单例中调用某些东西时,是否调用了 init 方法,或者为了调用 init 我必须调用var instance = MyClass() ?

最佳答案

init 仅在您第一次调用 MyClass.shared 时被调用

此时 MyClass 的实例保存在 shared 静态常量中。

例子

让我们考虑这个单例类

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

    var count = 0
}

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

enter image description here

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

Note: Of course I assumed the implementation of your Singleton class is correct.

关于Swift - 在单例类中初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40438080/

相关文章:

ios - 从协议(protocol)扩展访问 navigationItem

ios - 如何使用 Swift 在 LLDB 控制台中使用 _printHierarchy?

android - 如何在所有 Activity 中使用一个加载窗口实例

java - Spring 单例 bean 如何工作?

android - 如何在 ListView 项目单击上使用媒体播放器的单个实例

ios - 应用程序中运行的计时器在一段时间后开始延迟触发,原因未知

xml - 在 Swift 4 中解析 XML

ios - 如何根据用户选择在 CollectionView 标题下方显示不同的单元格?

WCF:只允许一个客户端并拒绝其他客户端的服务

java - java中SomeObject.class的含义是什么?