创建模拟类,方法和协议的示例会很有帮助。
答案 0 :(得分:0)
有十几次回答。以下是我对同等主题给出的一个答案的摘录,略有调整。
如果你的课程 B 来自 A ......
class ClassA: UIViewController {
func myFunc() { print("...") }
}
class ClassB: ClassA {
}
在课程 B 中,您可以通过输入
从类 A 调用方法super.myFunc() **OR** self.myFunc()
...取决于您是否在使用override
关键字的子类中重新实现了该方法。如果您没有 override
它(并且您不一定非必须),那么这两个调用是等效的。
另一方面,如果您在 B :
中添加了自己的实现override func myFunc() {
print("My implementation of myFunc")
}
致电super.myFunc()
将从 A 调用实施。调用self.myFunc()
将调用您的本地实现,两者都可以从您的子类中接受。当你的子类也调用super
时:
override func myFunc() {
super.myFunc()
print("My implementation of myFunc")
}
从子类调用self.myFunc()
将从两者调用实现。请记住,如果您未在override
方法中调用超类实现,则替换此实现。
在大多数UI
- 类中,强烈建议在覆盖时调用超类方法,以避免任何异常行为,除非您自己提供足够的实现(例如重新定位或绘制元素)。
P.S。模拟和单元测试是一个完整的主题,根本不可能在单个帖子中覆盖。请学习!