【发布时间】:2021-06-27 18:08:46
【问题描述】:
我有一个带有定义功能扩展的协议:
protocol DataFetch where Self: UIViewController {
var data: [SomeData]! { get set }
func fetchData()
func didFetch()
}
extension DataFetch {
func fetchData() {
/// fetch data
}
func didFetch() {
/// do something after fetching data
}
}
然后,我有一个符合协议的视图控制器以及一个从父视图控制器继承的子视图控制器:
class ParentViewController: UIViewController, DataFetch {
var data: [SomeData]! {
didSet {
didFetch()
}
}
override func viewDidLoad() {
super.viewDidLoad()
fetchData()
}
}
class ChildViewController: ParentViewController {
func didFetch() {
/// do something else
}
}
我想覆盖子视图控制器中的一个继承函数,但由于不能通过协议扩展来实现,所以我尝试简单地重新定义函数定义。但是,我发现子视图控制器中重新定义的函数没有在didSet 中被调用。
【问题讨论】:
-
@JoakimDanielson 抱歉,这是一个错字。我已经从父视图控制器继承了,但是仍然没有调用该方法。
标签: ios swift swift-protocols