使用 Swift Xcode 中的语法突出显示和自动完成有什么问题
What's wrong with the syntax highlighter and autocompletion in Xcode using Swift
在Objective-C开发项目时一切顺利,SourceKitService
占用CPU0%, 自动完成几乎是即时的。
但是,如果我稍微更改 Swift 代码,则需要花费很多秒才能完成任何操作(突出显示语法并检查、窃窃私语等)或者当我想要要查看具有 cmd
快捷方式的某些内容的实现,请再次 SourceKitService
在 CPU 的 xxx% 上并花费几秒钟。更改代码中的字符导致等待 10 秒才能看到一切正常,这太多了。
当然,我尝试按照建议删除 derivedData
、ModuleCache
、com.apple.dt.Xcode
等,但它不是固定的,仍在发生,让我慢下来。
有人知道如何真正解决或至少改进这个问题吗?
我建议尝试 Build Time Analyzer 看看是否有特定的事情会减慢编译器的速度。根据我的经验,主要问题是复杂的类型推断,通常来自多个链接的 .maps、复杂的关联类型和泛型。
Swift 编译器比 Objective-C 编译器做的更多,也更新了很多,因此它不太可能像 stable/fast 那样持续一段时间。我知道编译时间和 IDE 稳定性是他们意识到的问题并且正在努力改进。希望现在我们已经(承诺)了源代码兼容性,其中一些问题将在明年得到很大改进。不幸的是,在那之前我们可能不得不跳过一些障碍。
在这种情况下,它与 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
Note: Unfortunately this solution breaks debugging console and archiving. So remove the script if it is needed.
在Objective-C开发项目时一切顺利,SourceKitService
占用CPU0%, 自动完成几乎是即时的。
但是,如果我稍微更改 Swift 代码,则需要花费很多秒才能完成任何操作(突出显示语法并检查、窃窃私语等)或者当我想要要查看具有 cmd
快捷方式的某些内容的实现,请再次 SourceKitService
在 CPU 的 xxx% 上并花费几秒钟。更改代码中的字符导致等待 10 秒才能看到一切正常,这太多了。
当然,我尝试按照建议删除 derivedData
、ModuleCache
、com.apple.dt.Xcode
等,但它不是固定的,仍在发生,让我慢下来。
有人知道如何真正解决或至少改进这个问题吗?
我建议尝试 Build Time Analyzer 看看是否有特定的事情会减慢编译器的速度。根据我的经验,主要问题是复杂的类型推断,通常来自多个链接的 .maps、复杂的关联类型和泛型。
Swift 编译器比 Objective-C 编译器做的更多,也更新了很多,因此它不太可能像 stable/fast 那样持续一段时间。我知道编译时间和 IDE 稳定性是他们意识到的问题并且正在努力改进。希望现在我们已经(承诺)了源代码兼容性,其中一些问题将在明年得到很大改进。不幸的是,在那之前我们可能不得不跳过一些障碍。
在这种情况下,它与 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
Note: Unfortunately this solution breaks debugging console and archiving. So remove the script if it is needed.