答案 0 :(得分:5)
协议本身不能是单身人士。这没有任何意义。协议是其他类型符合的协议。
但是如果你想声明符合Singleton
的内容遵循某些规则,例如提供sharedInstance
,那就没关系了。你的语法不正确。您需要var
使用get
而不是let
。
protocol Singleton {
static var sharedInstance: Self { get }
}
原则上,您可以通过提供默认实现来自动创建此实例,但Swift不允许您在扩展中创建存储。虽然可以通过某种全局缓存来解决这个问题,但很难想象它值得这么麻烦。