Class Swift 中的扩展与子类化?

Class extension vs. subclassing in Swift?

我正在使用提供 class 其实例仅具有属性的第三方框架。在我的应用程序中,我想为此实例添加一个额外的 属性。对于这种情况,执行此操作的合适方法是什么?

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

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

提前致谢

b)

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

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

  • Extensions can add new functionality to a type, but they cannot override existing functionality

  • Extensions can add new computed properties, but they cannot add stored properties, or add property observers to existing properties

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

扩展:您可以添加新方法 计算变量 ,但您将在代码中实现无缝工作。无需在代码中添加新的 类

,即可在任何地方使用新功能

子类化:可以添加新变量override function 但您的代码中占用的空间更大。您将需要在整个项目中使用该特定子类。

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

我的建议:如果整个项目需要这个新行为使用extensions,否则subclass.