XCode 7.2 在协议扩展实现功能不正确时崩溃
Posted
技术标签:
【中文标题】XCode 7.2 在协议扩展实现功能不正确时崩溃【英文标题】:XCode 7.2 crashes when protocol extension implements function incorrectly 【发布时间】:2016-02-16 08:20:01 【问题描述】:不确定是否有其他人遇到过这种情况,但以下代码会导致 XCode 立即出错,并显示“SourceKitService 意外退出”,有时会导致 XCode 完全崩溃。
当我在扩展中更改协议函数的默认实现时,我在项目中遇到了这种情况,但忘记更改协议中的声明以匹配。
protocol Crash
func crash(age: Int) ->String
extension Crash
func crash(name: String) -> String
return "Test"
class TestCrash: Crash
【问题讨论】:
我有同样的经历,我没有答案......但最好的解决方法是如果在扩展中定义,则不要在协议中声明函数,因为这样的声明是多余的。这似乎是一个错误,编译器应该抱怨,TestCrash 不符合协议 Crash,因为 func crash(age: Int) ->String 没有实现。 感谢您的信息,没有意识到协议中的声明是多余的。 【参考方案1】:这个错误似乎已在 Xcode 7.3 beta 中修复。
Xcode 7.3b 只是在消息中声明错误并且不再崩溃。
【讨论】:
以上是关于XCode 7.2 在协议扩展实现功能不正确时崩溃的主要内容,如果未能解决你的问题,请参考以下文章
Swift EXC_BAD_ACCESS,在协议扩展中定义了默认实现
为啥 Xcode 7.2 崩溃“无法实例化名为 IBNSLayoutConstraint 的类”?