swift中的子类化与扩展

swift中的子类化与扩展,swift,Swift,出于某种原因,我想定制一个UITextField。因此,目前我对它进行了子类化,并添加了一些方法 我可以使用UITextField上的扩展吗? 哪一个是好方法?请解释 一般经验法则(YMMV): 您是否在添加每个UITextField都应该可用的通用功能?如果是,请进行扩展。所有UITextField实例都可以调用新方法 您是否添加了一些功能,这些功能应该限制在UITextField的特殊实例中,您可以准确地识别这些实例?如果是,请创建一个子类。只有子类的实例才能使用新方法 还有其他技术方面

出于某种原因,我想定制一个UITextField。因此,目前我对它进行了子类化,并添加了一些方法

我可以使用UITextField上的扩展吗?
哪一个是好方法?请解释

一般经验法则(YMMV):

  • 您是否在添加每个
    UITextField
    都应该可用的通用功能?
    如果是,请进行扩展。所有
    UITextField
    实例都可以调用新方法
  • 您是否添加了一些功能,这些功能应该限制在
    UITextField
    的特殊实例中,您可以准确地识别这些实例?
    如果是,请创建一个子类。只有子类的实例才能使用新方法

还有其他技术方面的考虑,例如扩展不能添加字段。

不能覆盖Swift扩展。因此,如果您想要创建一个测试目的的子类,那么您将受到限制。

您应该解释您想要做什么。有些事情可以通过继承来完成,但不能通过扩展来完成,还有一些事情可以通过扩展来完成,但不能使用继承。你的问题“现状”太笼统了。你的问题没有答案,就像“什么更好,汽车还是直升机”这个问题没有聪明的答案一样?任何代码,例如,你想在textfield行为中修改什么?很好的答案。你是说,如果我们写一个扩展,那么其他任何一个viewcontroller都会看到吗?我们是否必须使用任何“public”、“internal”属性或其他属性?@亲爱的,这取决于您需要的范围:您需要在哪里使用扩展名