【发布时间】:2016-12-14 02:44:19
【问题描述】:
我正在使用第三方框架,该框架提供了一个类,其实例只有属性。在我的应用程序中,我想为此实例添加一个额外的属性。对于这种情况,执行此操作的适当方法是什么?
a) 在我的应用中扩展框架的类
b) 创建框架类的子类并定义我需要的新属性
提前致谢
【问题讨论】:
标签: ios swift properties subclass class-extensions
我正在使用第三方框架,该框架提供了一个类,其实例只有属性。在我的应用程序中,我想为此实例添加一个额外的属性。对于这种情况,执行此操作的适当方法是什么?
a) 在我的应用中扩展框架的类
b) 创建框架类的子类并定义我需要的新属性
提前致谢
【问题讨论】:
标签: ios swift properties subclass class-extensions
这是
b)
因为不支持在类扩展中添加(存储)属性。
使用扩展有两个重要的规则:
扩展可以为类型添加新功能,但不能覆盖现有功能
扩展可以添加新的计算属性,但它们不能添加存储的属性,或者向现有属性添加属性观察器
【讨论】:
这取决于您期望实现的行为。
扩展:您可以仅添加新方法和计算变量,但是您将在代码中实现无缝的工作。无需在代码中添加新类即可在任何地方使用新功能
子类化:您可以添加新变量和覆盖函数,但是在您的代码中占用更大的空间。您将需要在整个项目中使用该特定子类。
我想这更像是一个设计问题。
我的建议:如果整个项目都需要这种新行为,请使用extensions,否则使用subclass。
【讨论】: