UITableViewDelegate 和 UITableviewDataSource:无法覆盖扩展中的非动态 class 声明 - Swift 4

UITableViewDelegate and UITableviewDataSource : Cannot override a non-dynamic class declaration from an extension - Swift 4

我正在尝试重写 extension.The 中的 UITableViewDelegate 方法,基础 class 已经实现了这些方法。请在下面找到详细信息:

   Base Class:

   class BaseTableViewController:UITableViewDelegate,UITableViewDataSource{

      //Base Class. The delegate and datasource methods has been implemented
   }

  class ChildViewController: BaseTableViewController{

     //Inherited class
  }

  extension ChildViewController  { 

      //Trying to override the Tableview Delegate and Datasource methods but getting error.
  }

错误详情:

我正在尝试将 Swift 3.0 转换为 Swift 4.0。 该实现在 Swift 3.0 中运行良好,但在 Swift 4.0 中出现错误。

我查看了以下链接: Override non-dynamic class delaration

请建议上述实施的正确方法。

正确的方法似乎是覆盖 class 内部协议的方法,而不是扩展:

class BaseTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        ...
    }
}


class ChildViewController: BaseTableViewController {
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        ...
    }
}

扩展旨在添加 新功能,而不是覆盖现有功能。另一种方法是将这些功能委托给外部对象。