【问题标题】:Why extend class instead of conforming to a protocol? [duplicate]为什么要扩展类而不是遵循协议? [复制]
【发布时间】:2020-04-23 13:31:27
【问题描述】:

我在很多地方都看到过这样的扩展

class MyClass: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

extension MyClass: SomeProtocol {
    func someFunc { }
}

扩展类是否有充分的理由,而不是仅仅遵循类本身的协议?

class MyClass: UIViewController, SomeProtocol {
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func someFunc {}
}

【问题讨论】:

标签: swift


【解决方案1】:

在技术上(即实际上),没有区别。这两种方法的行为相同。但是,这允许程序员将协议所需的所有代码放在一个地方。

tl;dr:这是一种风格选择。

【讨论】:

    【解决方案2】:

    它将具有相同协议一致性的成员组合在一起,从而无需使用// MARK: 标记部分。

    【讨论】:

      猜你喜欢
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      相关资源
      最近更新 更多