我遇到了Xcode的问题,其中弹出了"Source Kit Service Terminated"错误,所有语法高亮和代码完成都在Swift中消失了.我怎样才能解决这个问题?
这是一个示例图像:
输入后,SourceKitService在我的系统上崩溃
extension foo {
我正在使用Xcode 6 beta 6,如果我将其键入一个空文件或将其添加到现有文件中并不重要.一旦源包含一个extension
块,它就会崩溃.甚至在新创建的项目中也会发生
我的"解决方案"是避免扩展我目前正在处理的来源.我注释掉了类块的结尾和扩展块的开头.我一完成课后的工作,就再次评论他们:
class MyClass { [... my stuff ...] //} // //extension MyClass { }
我的答案(Xcode6-Beta7)只是删除Derived Data文件夹.
Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.
希望这有助于某人.显然有很多原因导致崩溃.
我在Apple的开发者论坛上找到了一个解决方案(需要登录,所以我也在这里解释).
TLDR:不要@protocol
在Objective-C中导入一个名为与a相同的Swift桥接头@interface
.例如,Facebook SDK具有协议和名为"FBGraphObject"的接口.
这是论坛帖子:
添加Facebook SDK会导致SourceKitService崩溃.如果你想使用beta 3并且你需要Facebook SDK,我找到并且正在为我工作的一个解决方法是重构Facebook SDK的@protocol FBGraphObject并将其重命名为@protocol FBGraphObjectProtocol,因为@interface FBGraphObject也存在并且显然是SourceKit不喜欢它.
它肯定是一个临时解决方案,只是为了让你的功能,你将不得不使用Cocoapods或自己构建Facebook SDK,而不是使用框架库.
目前,您需要确保没有冲突的@protocol和@interface声明,并且包括您可能正在使用的第三方库.
今天这让我付出了代价,希望它有所帮助
2014年7月10日由e.parto发布
我在Xcode 6 Beta 3中每隔几秒就遇到这个问题,即使在全新的项目中也是如此.我将部署目标从8.0更改为7.1并且已停止.
我相信我可能找到了更通用的解决方案.以下是我用来鼓励Xcode不产生SourceKitService Terminated
错误的步骤.
当我开始一个新的游乐场时,我会收到一个关于无法与游乐场交流的错误(Error running playground: Failed prepare for communication with playground.
请在推特上查看此图片.
当我将操场切换OS X
到iOS
,我会收到另一个错误(不幸的是我没有写下那个).
当我开始输入基于iOS的Swift项目,试图在任何UIKit特定类上使用代码完成/智能感知时,我会SourceKitService Terminated
在这个帖子中收到问题.
我开始通过谷歌搜索SourceKitService,这很少.
然后我在使用Xcode时开始监控Console.app.这显示了几个错误:
IDEPlaygroundDocument: Error encountered running playground
com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.
如果您只是在Swift项目的上下文中遇到问题,请先单独尝试.如果这不起作用,请尝试下面的所有步骤.
打开项目并将目标的部署目标更改为<= 7.1.
更漫长和更复杂的过程.(前三个步骤肯定没有用,但我做了它们,所以在这里记录它们)
完全删除系统上的所有Xcode副本.
重启你的电脑.
仅重新安装Xcode6-beta.
确认您在游乐场和/或项目中仍然存在问题.
打开iOS模拟器.
硬件 - >设备 - >管理设备
删除所有设备.
重新创建所需的所有设备.我将iOS版本附加到名称的末尾,只是因为.
重启Xcode和模拟器.
确认至少从操场切换时不再抛出的问题OS X
来iOS
.
打开项目并将目标的部署目标更改为<= 7.1.
看来问题是Xcode6无法正确查找和连接到模拟器.我无法确定为什么会出现这种情况,但这让我可以继续使用Swift进行开发.这可能与模拟器二进制文件似乎已移动的事实有关.
插入touchesMoved-function后,它开始在我的spritekit项目中发生.此函数使用强制解包,这似乎导致问题:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)
删除感叹号并因此停止强制解包后,SourceKitService停止崩溃.
希望这可以帮助!
为项目使用除Swift之外的其他名称."斯威夫特"是保留的.
你的项目命名了Swift
吗?看到那条消息,构建也会失败(<unknown>:0: error: module name "Swift" is reserved for the standard library
).尝试使用其他项目名称,例如SwiftTest
.它会工作.
您只需要删除"ModuleCache",这是Xcode用于自动完成的某种缓存.
复制并粘贴终端中的以下行:
rm -rf~/Library/Developer/Xcode/DerivedData/ModuleCache