2016-08-08 64 views
1

我使用第三方框架提供了一个实例只有属性的类。在我的应用程序中,我想为此实例添加一个额外的属性。这种情况下适当的方法是什么?Swift中的类扩展与子类化?

一)在我的应用程序

B)创建框架的类的子类,定义了新的属性,我需要提前

感谢扩展框架的类

回答

8

这是

b)

因为在类扩展中添加(存储)属性不是 支持的。

有使用扩展两个重要的规则:

  • 扩展可以添加新的功能,以一个类型,但它们不能覆盖现有的功能

  • 扩展可以添加新的计算性能,但他们无法添加存储的属性,或将属性观察者添加到现有属性中

2

这取决于您期望达到的行为。

扩展:可以添加新方法计算瓦尔,但你会实现你的代码无缝工作。新的功能没有在你的代码中添加新的类

子类的任何地方:可以添加新瓦尔覆盖功能但代码中的更大的足迹。您需要在整个项目中使用该特定的子类。

我想这是更多的设计问题。

我的建议:如果整个项目需要这种新的行为使用扩展,否则

+0

谢谢你的回答 – AppsDev

+1

我认为最后一点经常被忽视。扩展是全局性的,因此它们会影响可能不想要复杂性的代码部分。出于这个原因,我认为他们应该避免在这种情况下。 – LegendLength