ios – 子类中的Swift覆盖协议方法

ios – 子类中的Swift覆盖协议方法,第1张

概述我有一个基类,它实现了一个符合协议的扩展,如下所示: protocol OptionsDelegate { func handleSortAndFilter(opt: Options)}extension BaseViewController: OptionsDelegate { func handleSortAndFilter(opt: Options) { 我有一个基类,它实现了一个符合协议的扩展,如下所示:
protocol OptionsDelegate {    func handleSortAndFilter(opt: Options)}extension BaseVIEwController: OptionsDelegate {    func handleSortAndFilter(opt: Options) {        print("Base class implementation")    }}

我有一个继承自BaseVIEwController的子类“InspirationsVIEwController”.我在扩展中覆盖协议方法如下:

extension InspirationsVIEwController {    overrIDe func handleSortAndFilter(opt: Options) {        print("InsIDe inspirations")    }}

当我在子类扩展中覆盖“handleSortAndFilter”函数时,我收到错误:“扩展中的延迟无法覆盖”

但是当我实现UItableVIEw数据源和委托方法时,我没有看到类似的问题.

如何避免这个错误?

解决方法 使用where子句的协议扩展.有用.
class BaseVIEwController: UIVIEwController {}extension OptionsDelegate where Self: BaseVIEwController {  func handleSortAndFilter(opt: Options) {    print("Base class implementation")  }}extension BaseVIEwController: OptionsDelegate {}class InsipartionsVIEwController: BaseVIEwController {}extension OptionsDelegate where Self: InsipartionsVIEwController {  func handleSortAndFilter(opt: Options) {    print("Inspirations class implementation")  }}
总结

以上是内存溢出为你收集整理的ios – 子类中的Swift覆盖协议方法全部内容,希望文章能够帮你解决ios – 子类中的Swift覆盖协议方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1105498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存