目前我有一个父类(super class):
class ShareButtonAction : ButtonAction {
override func execute() {
guard let isReachable = reachability?.isReachable() where isReachable == true else {
print("No network connection")
return
}
}
ShareButtonAction 的子类:
class ShareTwitterAction : ShareButtonAction {
override func execute() {
super.execute()
guard let isReachable = reachability?.isReachable() where isReachable == true else {
return
}
}
如果在父类(super class)中捕获到保护条件,我不希望子类的 execute 实现被触发。目前我必须复制困扰我的代码。
如果父类(super class)守卫被抓到,有没有办法告诉子类不要费心执行。
我知道我可以回退到传递 block 而不执行包含 block 的守卫失败,尽管我觉得 swift 中应该有一个内置机制来使这更容易。我希望我还没有找到它。
最佳答案
您可以让该方法返回一个 bool 值,并使用它来决定是否要执行子类中的代码。
class ShareButtonAction : ButtonAction {
override func execute() -> Bool {
guard let isReachable = reachability?.isReachable() where isReachable else {
print("No network connection")
return false
}
return true
}
}
class ShareTwitterAction : ShareButtonAction {
override func execute() -> Bool {
let result = super.execute()
if result {
//... your code here
}
return result
}
}
关于ios - 当调用父类(super class)上的保护 block 时,是否有任何方法可以让子类的覆盖方法返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680179/