在我的一些新项目中,我遇到了一个问题,即Xcode Beta5(我在早期的beta中也遇到了这个问题)确实经常挂起(“沙滩球”)。在事件监视器中,我可以看到SourceKitService需要100%的CPU。
Xcode至少会挂起10-15秒。
我不知道我的代码是否有问题。在控制台实用程序中,我可以看到很多此错误: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!
最佳答案
经过一段时间的努力并阅读了同样问题困扰的人们的许多文章后,我意识到元主题是: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]]。
关于Xcode Beta经常挂起/SourceKitService高CPU,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25219304/