Swift协议可以是单例吗?

Nik*_*a P 2 singleton swift swift-protocols

我尝试将单行单例初始化(如在类中)用于单例,这是一些错误屏幕截图: 在此处输入图片说明

在此处输入图片说明

您能帮助我理解这些错误,以及是否可以实现单例协议吗?提前致谢

Rob*_*ier 7

协议本身不能是单例。那没有任何意义。协议是其他类型遵循的协议。

但是,如果您想声明符合Singleton某些规则的事物(例如提供)sharedInstance,那很好。您的语法不正确。您需要使用varwith get而不是let

protocol Singleton {
    static var sharedInstance: Self { get }
}
Run Code Online (Sandbox Code Playgroud)

原则上,您可以通过提供默认实现自动创建此实例,但是Swift不允许您在扩展中创建存储。尽管可以通过某种全局缓存来实现这一点,但很难想象值得为此付出麻烦。