【问题标题】:iOS: Subclass singleton in swiftiOS:Swift中的子类单例
【发布时间】:2020-02-11 14:09:44
【问题描述】:

我有一个框架,其中有一个单例类,比如说单例。该类被框架中的其他类使用。

在应用程序项目中,我想继承这个单例类,例如AppSingleton:单例。可能吗?什么是正确的解决方案?

【问题讨论】:

  • 你永远不会继承单例。因为如果你对它进行子类化,那么它就不再是单例了。
  • 你是对的。谢谢。
  • 不对。子类化并不意味着它不再是单例。这只是意味着应用程序中现在将存在另一个单例对象,并从中获取行为相似性。
  • 您能否详细说明一下,具体的用例是什么?大部分事情都可以通过扩展单例类来实现。

标签: ios swift


【解决方案1】:

我提供了一个解决方案,但它可能有点 hacky。

Class A {
  open class var shared: A {
    return A.privateShared
  }
  private static let privateShared = A()
}

Class B {
  open class var shared: B {
    return A.privateShared
  }
  private static let privateShared = B()
}

我必须澄清一下,这种方式并不完美,因为它实际上创建了 2 个实例!因此,从技术上讲,它不再是 singleton

但是,您可以覆盖类 B 的属性或方法来调用 A.shared 方法或属性。您必须知道自己在做什么,并考虑使用其他方式来解决您要解决的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多