Swift中的类扩展与子类化?

时间:2016-08-08 10:50:14

标签: ios swift properties subclass class-extensions

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

a)在我的应用程序中扩展框架的类

b)创建框架类的子类并定义我需要的新属性

提前致谢

2 个答案:

答案 0 :(得分:11)

它' S

<强> b)中

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

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

  
      
  • 扩展程序可以为类型添加新功能,但它们无法覆盖现有功能

  •   
  • 扩展可以添加新的计算属性,但不能添加存储的属性,也不能将属性观察者添加到现有属性

  •   

答案 1 :(得分:8)

这取决于您期望实现的行为。

扩展: 您可以添加新方法计算变量,但是你将在代码中实现无缝的努力。新功能可在任何地方使用,无需在代码中添加新类

子类: 可以添加新变量覆盖功能但是在您的代码中占据更大的空间。您需要在整个项目中使用该特定子类。

我想这更像是一个设计问题。

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