有没有办法将某些 Swift 函数标记为实现某些协议函数,以便如果协议的签名发生更改,编译器可以将实现标记为错误。
例如,考虑这个例子,我有一个实例Foo
协议的默认实现UIViewController
,我想为一个自定义Bar
类覆盖它,它是UIViewController
.
// V1
protocol Foo {
func number() -> Int
}
extension Foo where Self: UIViewController {
func number() -> Int {
return 0
}
}
// Overrides the default implementation
extension Bar: Foo {
func number() -> Int {
return 1
}
}
现在,协议演变为:
// V2
protocol Foo {
func numberV2() -> Int
}
extension Foo where Self: UIViewController {
func numberV2() -> Int {
return 0
}
}
// I think I override the default implementation but not anymore.
// => error prone, no error from the compiler
extension Bar: Foo {
func number() -> Int {
return 1
}
}
如何帮助我的Bar
扩展程序意识到该number
功能不再与Foo
协议相关?