我正在跟随Swift中的一个示例模拟器,当我们正在测试的函数被调用时,它将变量设置为true但是我不清楚的是我们似乎覆盖了子类中的函数,即mock然后我们返回它的父对方法的再现。我假设覆盖的工作方式是我们用我们想要的逻辑重写函数,当我们这样做时,我假设包含原始函数的父类完全不知道子类如何处理函数?
以下是示例代码:
extension ItemListDataProviderTests{
class MockTableView: UITableView {
var cellGotDequeued = false
override func dequeueReusableCell(withIdentifier identifier: String, for indexPath: IndexPath) -> UITableViewCell {
cellGotDequeued = true
return super.dequeueReusableCell(withIdentifier: identifier, for: indexPath)
}
}
如何返回父方法调用重写函数并将测试变量设置为true?我假设通过调用super它将运行父级的逻辑而不会触发子级的重写方法。
答案 0 :(得分:1)
您展示的方法
cellGotDequeued
设置为true
dequeueReusableCell
您是正确的,父类不知道子类如何覆盖此方法。
调用super
会调用父类的实现,但在子类实现期间会这样做,并且绝不会阻止子实现执行。子类使用super
确定是否应该调用父实现,如果是,则应该在之前或之后执行任何其他操作。