如果我有协议,MyProtocol
定义为:
protocol MyProtocol {
func myFunction() -> String
}
我在扩展中声明了一个默认实现,这样构造者就可以选择"实现功能:
extension MyProtocol {
func myFunction() -> String { return "" }
}
一切都应该只是花花公子。
但是,当一个类符合该协议并且没有实现这些函数时,编译器会失败并显示Segmentation fault 11
。一旦类实现了该函数,错误就会消失,并且一切都很好,但它似乎无法在扩展中定义默认实现。
有谁知道为什么会这样?是因为符合类声明它实现了方法,因此编译器忽略了扩展中写的内容,无法找到方法然后崩溃?
答案 0 :(得分:-1)
protocol extensions
和Segmentation fault 11
也遇到过类似的问题。
在我的情况下,问题是,extension
我在函数之前放置了mutating
关键字,但在protocol
中没有mutating
。而错误导致Segmentation fault 11
。
也许这有点帮助。