【问题标题】:What's wrong with the syntax highlighter and autocompletion in Xcode using Swift使用 Swift 的 Xcode 中的语法高亮和自动完成有什么问题
【发布时间】:2017-06-26 09:18:22
【问题描述】:

Objective-C 中开发项目时一切顺利,SourceKitService 占用 0% 的 CPU,自动完成几乎是即时的。

但是,如果我稍微更改 Swift 代码,则需要花费几秒钟的时间来执行任何操作(突出显示语法并检查、耳语等)或者当我想查看带有 @987654322 的某些东西的实现时@ 快捷方式,在 xxx% 的 CPU 上再次使用 SourceKitService,需要几秒钟。更改代码中的字符会导致等待 10 秒才能看到一切正常。

当然,我按照建议尝试删除 derivedDataModuleCachecom.apple.dt.Xcode 等,但它不是永久固定的,仍在发生,拖慢了我的速度。

有人知道如何真正解决或至少改进它吗?

【问题讨论】:

  • 您遇到了一个自 Swift 第一个版本以来就存在的常见错误。一些代码虽然在语法上有效,但可能会导致 SourceKit 发疯。不幸的是,处理这个问题的最好方法是确定触发它的确切代码段。请考虑提交包含您的确切代码的错误报告。
  • 不要告诉我它是项目某处的空白字符...
  • 考虑发布原始代码和触发此问题的修改。这是一个复杂的错误,每种情况的解决方法都不同。我记得这一点,但在处理泛型时最常发生在我身上。
  • 就是这样,没关系。我可以清楚地擦除一行代码,撤消该操作并在 5 秒内再次突出显示它。
  • 你没有提到你使用的是什么版本 - Swift3 似乎比这更好。

标签: swift xcode syntax-highlighting


【解决方案1】:

我建议尝试Build Time Analyzer 看看是否有特定的事情会减慢编译器的速度。根据我的经验,主要问题是复杂的类型推断,通常来自多个链接的 .map、复杂的关联类型和泛型。

Swift 编译器比 Objective-C 编译器做得更多,而且更新了很多,因此它不太可能在相当长的一段时间内保持稳定/快速。我知道编译时间和 IDE 稳定性是他们意识到的问题并且正在努力改进。希望现在我们已经(承诺的)源代码兼容性,其中一些问题将在明年得到很大改进。不幸的是,在那之前我们可能不得不跳过一些障碍。

【讨论】:

    【解决方案2】:

    在这种情况下,它与CocoaPods 有关。它正在将.h 文件复制到构建目录中,SourceKit 变得混乱。

    我将这个脚本添加到我的项目中,SourceKit 有点停止了,但它仍然非常慢。

    function removeHeaders() {  
        find $BUILD_ROOT/Debug-iphonesimulator/  -name '*.h' -exec rm -f {} \;  
    }  
    removeHeaders
    

    参考。 Xcode Swift Syntax Highlighting and Code Completion Completely Broken

    注意:很遗憾,此解决方案破坏了调试控制台归档。因此,如果需要,请删除脚本。

    【讨论】:

    • 请注意,这也会从构建的框架中删除 .h 文件,这会有效地破坏调试控制台,因为它无法再加载现在无效的框架。
    猜你喜欢
    • 2012-04-04
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多