Xcode Beta经常挂起/ SourceKitService高cpu

时间:2014-08-09 13:56:34

标签: xcode swift

在我的一些新项目中,我遇到了一个问题,Xcode Beta5(我早期的测试版也存在问题)真的经常挂起('beachball')。在活动监视器中我可以看到,SourceKitService需要100%的CPU。 Xcode比挂起至少10-15秒。

我不知道,如果我的代码出现问题。在Console Utility中,我可以看到很多错误:

sourcekit-serv[63558]: [1:getBufferStamp:17199:1776.3650] failed to stat file: <imports> (No such file or directory)

更新:

我发现,使用以下内容是问题:[[String: AnyObject]],就像:

var myArray: [[String: AnyObject]]
myArray = [
    ["name": "item1", "children": [
        "name": "child1", "children": [],
        "name": "child2", "children": []]],
    ["name": "item2", "children": [
        "name": "child1", "children": [],
        "name": "child2", "children": []]]  
]

但小心:此代码在几秒钟后完全阻止了Xcode!

2 个答案:

答案 0 :(得分:10)

在经历了一段时间的努力并阅读了同样问题的人们阅读的许多帖子之后,我意识到元主题是:Swift与“复杂”数组和词典进行斗争。为了帮助Xcode,我明确地为我的所有数组和字典定义了变量的类型,而不是让Xcode弄明白。这使我的问题消失了。

不要让Swift通过编写以下代码行来找出变量的类型:

var myDictionary1 = ["Item":[1,2,3],"Thing":[4,5,6],"Weight":[7,8,9]]

我重写了我的变量声明如下:

var myDictionary2: [String:[Int]] = ["Item":[1,2,3],"Thing":[4,5,6],"Weight":[7,8,9]]

作为旁注,Xcode的自动完成功能将myDictionary1显示为[String:ArrayInt],将myDictionary2显示为[String:[Int]]。

答案 1 :(得分:9)

我发现当SourceKit行为不端时,我可以用我的代码验证问题(导致编译器在幕后崩溃),退出Xcode,删除〜/ Library / Developer / Xcode / DerivedData / ModuleCache以及与我的应用程序的派生数据位于同一位置的文件夹经常(至少是暂时的)修复了问题。