ArtistVC
是CategoryVC
的子类,它是BrowserVC
的子类。
大多数ArtistVC
的UITableView数据源方法最终使用CategoryVC
调用return super.tableView(tableView, cellForRowAt: adjustedIndexPath)
这些方法的实现(例如)当然会发生一些事情,比如修改传递给方法的indexPath
。
但有时我实际上想绕过CategoryVC
的实施并使用BrowserVC
的实施。
super.super.someMethod()
显然不是答案。这可能吗?
答案 0 :(得分:0)
这是一种(复杂的)方法,但它要求中间类"贡献"绕过它的覆盖。
例如:
class A
{
func doIt(_ parameter:Int) { print("A.doIt(\(parameter))") }
}
class B:A
{
override func doIt(_ parameter:Int) { print("B.doIt(\(parameter))") }
var super_doIt:(Int)->() { return super.doIt }
}
class C:B
{
override func doIt(_ parameter:Int)
{ super.super_doIt(parameter) }
}
let c = C()
c.doIt(3) // A.doIt(3)