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 的类”?

使用 7.3 后的 Xcode 7.2 - 没有列出模拟器

Xcode 5.0 不符号化崩溃日志

Xcode如何在预览(Preview)调试中避免与SwiftUI正常运行时环境不一致导致的崩溃

Xcode如何在预览(Preview)调试中避免与SwiftUI正常运行时环境不一致导致的崩溃