Swift中的类扩展与子类化?

App*_*Dev 8 properties subclass ios class-extensions swift

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

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

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

提前致谢

vad*_*ian 13

它的

b)

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

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

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

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


Mat*_*ish 8

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

扩展:只能添加新方法计算变量,但您将在代码中实现无缝工作.无需在代码中添加新类即可在任何地方使用新功能

子类:可以添加新变量覆盖函数,但代码中的占用空间更大.您需要在整个项目中使用该特定子类.

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

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