首页 > 解决方案 > 使用单例模式在 Swift 中创建管理器的最佳方法

问题描述

我在我们的应用程序中有两个简单管理器的示例。

enum SomeStatus {
   case none
   case inProgress
}

class SomeManager {
   static let shared = SomeManager()

   private var _status: SomeStatus = .none

   var status: SomeStatus {
      get { return _status }
   }

   func changeStatus(to status: SomeStatus) {
      _status = status
   }

}

let manager = SomeManager.shared
print (manager.status)

// none

manager.changeStatus(to: .inProgress)
print (manager.status)

// inProgress

在这个例子中,我隐藏了通过直接分配状态变量来改变我们经理之外的状态的可能性。总之看起来不错。

但我们可以用另一种方式做到这一点

class SomeManager {
   private static let shared = SomeManager()

   private var _status: SomeStatus = .none

   static var status: SomeStatus {
      get { return shared._status }
   }

   static func changeStatus(to status: SomeStatus) {
          shared._status = status
       }

}

print (SomeManager.status)

// none

SomeManager.changeStatus(to: .inProgress)
print (SomeManager.status)

// inProgress

重点展示我们如何隐藏共享实例,但使用相同的单例模式

那么,问题是,示例中用例的最佳性能/方法是什么?

标签: swiftswift3singleton

解决方案


推荐阅读