【问题标题】:Shared instance swift [duplicate]共享实例 swift [重复]
【发布时间】:2015-04-07 19:19:40
【问题描述】:

你会如何用 swift 编写以下内容?

static ClassName* singleCommon = nil;
+ (ClassName*)sharedInstance {
    @synchronized(singleCommon) {
        if(!singleCommon) singleCommon = [[ClassName alloc] init];
    }
    return singleCommon;
}

【问题讨论】:

    标签: swift


    【解决方案1】:

    一个好的解决方案是:

    class Singleton {
        class var sharedInstance: Singleton {
            struct Static {
                static var instance: Singleton?
                static var token: dispatch_once_t = 0
            }
    
            dispatch_once(&Static.token) {
                Static.instance = Singleton()
            }
    
            return Static.instance!
        }
    }
    

    解决方案和解释来自: http://code.martinrue.com

    【讨论】:

      【解决方案2】:

      我通常在 Swift 中这样使用 sharedInstance:

      private let _sharedInstance = SomeClass()
      
      class SomeClass: NSObject {
      
          class var sharedInstance: SomeClass {
              get {
                  return _sharedInstance
              }
          }
      
      }
      

      这是一篇讨论这个问题的博文: http://thatthinginswift.com/singletons/

      【讨论】:

      • 味道很糟糕,你的_sharedInstance 不在课堂上,如果他们解决了你在这里做的事情,它可能会与其他实现冲突
      猜你喜欢
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      相关资源
      最近更新 更多