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覆盖协议方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)