为什么建议的Swift单例实现使用结构?

时间:2014-07-01 23:56:18

标签: ios cocoa-touch singleton swift

commonly accepted Singleton pattern for Swift在类变量/ type属性中使用Struct。

而不是:

class MySingleton {
  class var sharedInstance: MySingleton {
    struct Singleton {
      static let instance = MySingleton()
    }
    return Singleton.instance
  }
}

为什么我们不这样做:

class MySingleton {
  class var sharedInstance: MySingleton {
      let instance = MySingleton()
      return instance
  }
}

如果这是一个非常愚蠢的问题,请道歉。但是,不要利用常量的线程安全性和let

1 个答案:

答案 0 :(得分:2)

通过您的实施,' sharedInstance'每次调用它都不是单例因素,它会创建MySingleton的新实例。并且,要创建一个静态变量,您必须将它放在struct o enums中,否则,您将收到编译器错误