【问题标题】:Subclass an existing Swift Singleton子类化现有的 Swift Singleton
【发布时间】:2016-11-13 20:35:57
【问题描述】:

我正在向创建单例 (AWSIdentityManager) 的 AWS 类添加功能,并且该类的代码不断变化(AWS 正在改进它)。我想让我添加的功能与 AWS 代码更加不同,这样我就不必在升级时不断更改它。

我可以通过子类化或扩展来实现吗?

我的目标不是创建现有单例的另一个副本,我只想向其中添加方法(希望是属性),而不会对已发布的代码进行太多更改。

我应该注意以下几点:原始类是用 Obj-C 编写的。如果可能的话,我想拥有房产。

【问题讨论】:

标签: ios swift subclassing swift-extensions


【解决方案1】:

扩展

extension AWSclass {
func functionA () { ...}

}

用法

AWSclass.shared.functionA()

【讨论】:

  • 好的 - 所以你说它是一个扩展。但在那种情况下,我认为我不能正确添加属性?另外,我应该提到 AWS 类在 Obj-c 中,我应该使用类别还是尽我所能快速扩展。
  • @Bruce0 在 Swift 中你不能拥有stored properties。但是您可以拥有computed properties。如果它在 Objective-C 中,你必须使用 bridging
  • 您也可以添加type properties,只要您提供初始化表达式或getter/setter。
  • @Bruce0 对于我之前的评论,我的意思是您不能在扩展中拥有存储的属性。普通类可以存储属性...
  • @Honey 无论如何我可以覆盖单例中的现有方法之一吗? (我知道扩展不允许它)。如果可能的话,我想在初始化发生时获得控制权,但在经过一些处理后将其传递回原始类 func 。也许我应该为扩展功能做一个扩展,然后创建一个单独的类来管理添加的初始化功能。只是看起来很笨拙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多