代码之家  ›  专栏  ›  技术社区  ›  Mark A. Donohoe

为什么重写函数而只调用基类实现会返回不同的结果而不重写它呢?

  •  1
  • Mark A. Donohoe  · 技术社区  · 6 年前

    我觉得这很奇怪。在UITableViewController子类中,我有这个。。。

    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return super.tableView(tableView, heightForHeaderInSection: section)
    }
    

    据我所知 应该 本质上是一个no操作,因为它只是简单地传递值,就好像它没有被重写一样。然而,结果实际上是不同的。

    我的猜测是“default”实现实际上并没有调用基类,而是检查可选的委托函数,如果没有定义(如果不重写它,就不会是这样),它会执行其他操作。但是,我不确定这是否正确,因为我特别说要重写某些内容,而不仅仅是实现委托方法(您不必重写)

    那么为什么这会返回不同的结果呢?

    0 回复  |  直到 6 年前