【发布时间】:2016-03-02 20:06:08
【问题描述】:
【问题讨论】:
-
您不能实例化协议的实例,只能实例化协议采用者
-
我不明白这样做意味着什么。单例是一个实例,但您不创建协议实例。相反,您创建可以实现协议的类的实例。
标签: swift singleton swift-protocols
【问题讨论】:
标签: swift singleton swift-protocols
协议本身不能是单例。那没有任何意义。协议是其他类型遵循的东西。
但是,如果您想声明符合Singleton 的内容遵循某些规则,例如提供sharedInstance,那很好。您的语法不正确。您需要使用 var 和 get 而不是 let。
protocol Singleton {
static var sharedInstance: Self { get }
}
原则上,您可以通过提供默认实现来自动创建此实例,但 Swift 不允许您在扩展中创建存储。虽然可以通过某种全局缓存来解决这个问题,但很难想象这值得麻烦。
【讨论】:
But if you wanted to declare that things that conform to Singleton follow some rule, such as offering a sharedInstance