Swift 协议可以是单例的吗?

Can Swift protocols be singleton?

我已经尝试过使用单行单例初始化(如 class)作为单例,这里有一些错误截图:

你能帮我理解这些错误吗,还有,单例协议是否可能? 提前致谢

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

但是,如果您想声明符合 Singleton 的事物遵循某种规则,例如提供 sharedInstance,那很好。您的语法不正确。您需要使用 varget 而不是 let.

protocol Singleton {
    static var sharedInstance: Self { get }
}

原则上,您可以通过提供默认实现来自动创建此实例,但 Swift 不允许您在扩展中创建存储。虽然可以通过某种全局缓存来解决这个问题,但很难想象这是值得的。