如何在Swift中对超类的超类进行分类?

时间:2017-05-13 22:37:08

标签: swift

ArtistVCCategoryVC的子类,它是BrowserVC的子类。

大多数ArtistVC的UITableView数据源方法最终使用CategoryVC调用return super.tableView(tableView, cellForRowAt: adjustedIndexPath)这些方法的实现(例如)当然会发生一些事情,比如修改传递给方法的indexPath

但有时我实际上想绕过CategoryVC的实施并使用BrowserVC的实施。

super.super.someMethod()显然不是答案。这可能吗?

1 个答案:

答案 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)