假设下面的操场:
protocol MyProtocol
{
func MyFunc()
}
class MyBase : MyProtocol
{
func MyFunc()
{
}
}
class MyClass : MyBase, MyProtocol
{
}
Run Code Online (Sandbox Code Playgroud)
我期待这不能编译,并唠叨不实现我的协议.但与其他语言不同,如果协议符合基类,Swift似乎认为它很好.
如何让MyClass强制覆盖我的方法?
我正在使用Swift 1.1,tia.
您的代码绝对有效.MyClass继承MyBase已经符合的MyProtocol,所以让子类也符合它是完全多余的.话虽这么说,你基本上是在寻找一个在Swift中并不存在的抽象函数,我认为你可以在这个答案中得到你想要的最接近的函数.所以在您的基类中,如果没有覆盖,只需发出警告:
class MyBase : MyProtocol {
func MyFunc() {
fatalError("This method must be overridden")
}
}
Run Code Online (Sandbox Code Playgroud)
正如问题评论中所建议的那样,不同的方法可能更适合您尝试做的事情(例如,组合或使用结构),但是如果不了解更多关于您要实现的内容的话,有点难以推荐不同的解决方案(而不仅仅是预期的解决方案).如果您确实提供了其他详细信息,则可能会收到更合适的答案.
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |