swift - Swift 协议(protocol)可以是单例的吗?

标签 swift singleton swift-protocols

我尝试过对单例使用单行单例初始化(如在类中),以下是一些错误屏幕截图: enter image description here

enter image description here

你能帮我理解这些错误,以及单例协议(protocol)是否可能吗? 提前致谢

最佳答案

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

但是,如果您想声明符合 Singleton 的事物遵循某些规则,例如提供 sharedInstance,那就没问题了。你的语法不正确。您需要将 varget 一起使用,而不是 let

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

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

关于swift - Swift 协议(protocol)可以是单例的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51872780/

相关文章:

swift - 从单例初始化程序中抛出异常

swift - 泛型方法中 T 和 Self 的区别

ios - 将 UICollectionView 与 CoreData 和 NSFetchedResultsController 结合使用

swift - 交换键和值的字典扩展 - Swift 4.1

swift - UIView 重叠 ios 10 中的状态栏

swift - 我如何定义 Swift 协议(protocol),以便实现可以是属性或方法?

swift - swift 中的类到协议(protocol)对话

ios - 从属性构建索引

javascript - 这是单例模式吗

javascript - 在Javascript单例中用数组成员初始化对象成员的属性