我有一个超类,它有一个方法的基本实现(prepareForSegue:sender:在我的例子中),我想确保任何覆盖此方法的子类都调用super的实现.
class A {
func foo() {
// Some basic shared behavior
}
}
class B : A {
override func foo() {
// I want the compiler to yell at me if I forget super.foo() here
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法NS_REQUIRES_SUPER在swift中使用,或者使用协议来模仿这种行为?
可能有一种方法可以解决这个问题:
class A {
private func foo() { println("A: Foo") }
final func bar() {
println("A: Bar")
foo()
}
}
class B : A {
override private func foo() { println("B: foo") }
}
var a = A()
a.bar() // "A: Bar\nA: Foo"
println()
var b = B()
b.bar() // "A: Bar\nB: Foo"
Run Code Online (Sandbox Code Playgroud)
此代码不允许重写该bar()方法,但允许重写该foo()方法。技巧是用户需要调用bar()方法而不是foo()方法,但是如果你做到了这一点,那么你就可以确保超类方法,即println("A: Bar")总是被调用!:-)
| 归档时间: |
|
| 查看次数: |
548 次 |
| 最近记录: |