Swift 协议可以是单例的吗?
Can Swift protocols be singleton?
我已经尝试过使用单行单例初始化(如 class)作为单例,这里有一些错误截图:
你能帮我理解这些错误吗,还有,单例协议是否可能?
提前致谢
协议本身不能是单例。那没有任何意义。协议是其他类型遵守的东西。
但是,如果您想声明符合 Singleton
的事物遵循某种规则,例如提供 sharedInstance
,那很好。您的语法不正确。您需要使用 var
和 get
而不是 let
.
protocol Singleton {
static var sharedInstance: Self { get }
}
原则上,您可以通过提供默认实现来自动创建此实例,但 Swift 不允许您在扩展中创建存储。虽然可以通过某种全局缓存来解决这个问题,但很难想象这是值得的。
我已经尝试过使用单行单例初始化(如 class)作为单例,这里有一些错误截图:
你能帮我理解这些错误吗,还有,单例协议是否可能? 提前致谢
协议本身不能是单例。那没有任何意义。协议是其他类型遵守的东西。
但是,如果您想声明符合 Singleton
的事物遵循某种规则,例如提供 sharedInstance
,那很好。您的语法不正确。您需要使用 var
和 get
而不是 let
.
protocol Singleton {
static var sharedInstance: Self { get }
}
原则上,您可以通过提供默认实现来自动创建此实例,但 Swift 不允许您在扩展中创建存储。虽然可以通过某种全局缓存来解决这个问题,但很难想象这是值得的。