有没有办法将swift方法注释为需要调用其超类的实现
发布时间:2020-12-14 04:54:15 所属栏目:百科 来源:网络整理
导读:参见英文答案 Swift equivalent to __attribute((objc_requires_super))?????????????????????????????????????1个 我有一个超类,它有一个方法的基本实现(prepareForSegue:sender:在我的情况下),我想确保任何覆盖此方法的子类都调用super的实现. class A {
参见英文答案 >
Swift equivalent to __attribute((objc_requires_super))?????????????????????????????????????1个
我有一个超类,它有一个方法的基本实现(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 } } 有没有办法在swift中使用NS_REQUIRES_SUPER,或者可能是使用协议模仿这种行为的方法? 解决方法
可能有一种可能有效的方法:
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: BarnA: Foo" println() var b = B() b.bar() // "A: BarnB: Foo" 此代码不允许覆盖bar()方法,但允许覆盖foo()方法.那么诀窍是用户需要调用bar()方法而不是foo()方法,但是如果你发生了这种情况,那么你可以确保超类方法,即println(“A:Bar”)总是叫! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |