Xcode卡在索引上

问题描述 投票:103回答:31

我已经工作了2个月的项目没有任何理由停止工作,因为Xcode陷入了“索引”。我不能再建造这个项目了。如果我尝试构建,Xcode冻结,我必须强制退出。这只发生在这个项目中。

我尝试清理所有派生数据,但没有帮助。

我正在使用Xcode 4.5.2。

有任何想法吗?

xcode indexing freeze
31个回答
147
投票
  1. 打开项目文件夹。
  2. 找到ProjectName.xcodeproj文件。
  3. 右键单击“复制并粘贴到安全位置”。
  4. 右键单击“显示包内容”。
  5. 找到project.xcworkspace文件并删除该文件。
  6. 重新打开您的项目并清理和重建。

如果问题仍未解决,请将文件替换为备份文件。


2
投票

我有一个类似的问题,Xcode会花很多时间索引,并经常挂起构建项目,此时我不得不强制退出并重新启动Xcode。这很烦人。

然后我注意到项目中有关不正确地将self指定为代表的警告。果然,类声明中缺少一个协议。请注意,OP的示例代码中有类似的赋值(尽管从示例中无法判断是否声明了正确的协议):

leaderboardController.leaderboardDelegate == self;

解决该警告后(通过正确声明已实现的协议),Xcode停止了行为不端。此外,我应该注意,自协议方法实施以来,项目确实正确执行。只是Xcode无法确认该协议实际上应该由该类实现。


2
投票
  • 首先,断开网络连接。您的有线网络和无线网络都应该关闭。
  • 第二,杀死com.apple.dt.SourceKitService进程。然后XCode将再次开始索引而不是卡住。

enter image description here


2
投票

如果您尝试解决索引问题并尝试解决索引问题,请尝试另一件事!

尝试将此标志添加到您的构建设置中。

-Xfrontend -warn-long-expression-type-checking=400

它将导致编译器花费很长时间推断出复杂表达式的警告。

这可能会导致生成错误,在找到慢速表达式然后删除构建标志后,该错误将消失。


1
投票

在Xcode 6.4中有类似的问题。进度条表示“索引”已“暂停”。尝试删除project.xcworkspace,然后如上所述删除派生数据。似乎没有帮助。注意到上面的帖子也建议修正警告,因为我继承了180个警告这个庞大的项目,我对自己说,“这到底是什么时候修好警告”。半小时后,当我修正警告时,我注意到“索引”进度条从10%增加到大约20%。一个小时后,它是50%,然后是另一个小时到80%,然后又过了半个小时就完成了!结论:在上述建议中添加“长时间午餐或午睡”。


1
投票

我遇到了与Xcode 7.0 beta相同的问题。在我的例子中,“构建设置”的“供应配置文件”和“产品包标识符”的值在PROJECT和TARGETS之间不同。我为它们设置了相同的值。我还为“appName”和“appNameTest”的TARGETS使用了相同的值。然后关闭项目并重新打开它。这解决了我的情况。


1
投票

就我而言,删除派生数据目录没有帮助。显然我有一个文件由另一个进程锁定,因为在关闭了几个终端窗口和emacs,并终止反应原生包装程序进程后,一切都解决了。


1
投票

对我来说,我犯了一个愚蠢的错误。我写了一个这样的类:

class A: A {
.......
}

一个类继承自身导致冻结。 Xcode没有消息提示。


1
投票

这发生在我身上。如果您正在使用cocoapods,请执行以下操作:

  1. 删除project.xcworkspace
  2. 使用终端上的“pod install”重新安装pod
  3. 它将创建一个新的project.xcworkspace
  4. 打开新project.xcworkspace - > Clean - > Build

1
投票

我在使用Xcode 9.3.1的一些项目中遇到过这个问题,在我的情况下,问题是由于某些原因Xcode不喜欢的一些快速代码。这个问题很难解决,因为很难找到导致问题的文件。

当我遇到这个问题时,我从Xcode项目中删除一些文件(删除引用),我尝试测试索引是否有效。我这样做的过程

  1. 删除一些文件
  2. 关闭Xcode
  3. 打开Xcode
  4. 如果索引完成尝试重命名一些方法,如果可能你删除的文件工作,他们有一些奇怪的Xcode。

在我的情况下,我在同一个文件中有一个带有被动扩展的类定义,由于某种原因Xcode不喜欢它,我将被动扩展移动到另一个文件,现在索引工作正常。


1
投票

没有什么对我有用,我的项目太大了(将目标cc++swiftjava文件与j2obj合并)。我已经禁用Xcode索引并且几个月没有代码完成工作(这很痛苦)。但最后我找到了一个解决方法。我们的想法是让Xcode为代码编制索引,但是使用像cputhrottle这样的外部工具来限制其CPU使用率。

所以首先你需要在终端安装cputhrottle

brew安装cputhrottle

然后像这样限制Xcode索引过程(20 = 20%)

sudo cputhrottle $(pgrep -f com.apple.dt.SKAgent)20

我已经在模式细节中公开了我的“解决方案”:How to prevent Xcode using 100% of CPU when indexing big projects


63
投票
  1. 从Xcode关闭该项目
  2. 打开Xcode Organizer,找到有问题的项目
  3. 在管理器中删除派生数据文件夹
  4. 关闭/重新打开Xcode

在所有Xcode行为异常的情况下,首先尝试Nuking Derived Data


0
投票

也停止运行应用程序。如果你有另一个运行xcode的应用程序,先停止它,你应该继续索引。


0
投票

对我来说,原因是我同时在主编辑器和助理编辑器中打开了同一个文件。一旦我关闭了助理编辑器,它就会通过。 (Xcode版本7.2.1)


0
投票

关闭您的Xcode,关闭任何git客户端(源树或终端),如果它已打开,最后重新启动您的项目。


0
投票

我也面临着这个问题。我注意到我已经两次打开了同一个项目。

所以QuitXCode>打开你的项目并确保只有一个实例打开> Clean> CleanBuild文件夹在某些情况下> build。

它应该工作


0
投票

最近在XCode 7.3.1上面对这一点 - 对我来说,我注意到CleanMyMac3的RAM使用量达到了100%。重新启动机器后,问题神奇地修复了。但公平地说,我已经开始尝试接受答案了,所以你要在重启之前做同样的事情以防万一:-)


0
投票

我通过简单地从我的设备中删除应用程序并重建来修复此问题。


0
投票

我在swift 2.2中遇到了同样的问题

它与泛型函数重载函数有关

func warnLog() {
    print("Warning line: \(#line) file: \(#file) ")
}

func warnLog<T>(input:T? = nil) -> T? {
    print("Warning line: \(#line) file: \(#file) ")
    return input
}

func warnLog<T>(input:T) -> T {
    print("Warning line: \(#line) file: \(#file) ")
    return input
}

我需要做的就是删除一个未使用的重载

func warnLog<T>(input:T? = nil) -> T? {
    print("Warning line: \(#line) file: \(#file) ")
    return input
}

0
投票

我的情况:它不是project.xcworkspace文件,它不是Derived Data文件夹。

我浪费了很多时间。更糟糕的是,没有错误消息。 Xcode没有任何线索。完全迷失了。

最后这个函数(超过10个参数)负责。

func animationFrames(level: Float,
                     image: String,
                     frame0: String,
                     frame1: String,
                     frame2: String,
                     frame3: String,
                     frame4: String,
                     frame5: String,
                     frame6: String,
                     frame7: String,
                     frame8: String,
                     frame9: String,
                     frame10: String) {
}

要发疯了!事实是,这是令人担忧的(因为没有语法错误,或任何类型)


0
投票

对于XCode 9.3索引问题 - 卸载XCode并从零重新安装。适合我。


0
投票

当我的机器没有交换空间时,这个问题发生在我身上。关闭了几个程序和浏览器选项卡,在30分钟卡住之后,构建突然成功。与我这边的派生数据,锁定文件等无关。


22
投票

我有这个确切的问题,它是由20项数组文字引起的。不得不切换到不同的语法。很傻。


0
投票

我已经尝试了所有列出的东西,索引是保持冻结。这对我有帮助:如果你的索引是冻结的,并且你有一个或多个快速进程占用了99%的cpu - 只需要杀掉这个快速的任务,稍等一下,进度应该移动。它可以重复,直到它完成,在我的情况下我杀了这个过程7次,但最后,索引完成了!


12
投票
  1. 关闭所有打开的Xcode
  2. rm -rf ~/Library/Developer/Xcode/DerivedData
  3. 右键单击PROJECT_NAME.xcworkspace,选择“显示内容”,然后删除“xcuserdata”文件夹

8
投票

当使用Xcode 6时,它说

等待制作

可能是make的实例已经在运行。杀死进程并编制索引进度。傻,但为我工作。


8
投票

我遇到了类似的问题,发现我不小心将一个类定义为自己的子类。我没有得到任何警告或错误,但编译卡住了。

class mainClass : mainClass
{
    ...
}

4
投票

按住alt>产品>清理构建文件夹


3
投票

对我来说,完全关闭Xcode,然后重新启动项目工作。

这不是原始问题的解决方案,我不相信,但在删除文件和文件夹等之前尝试这是一件更简单的事情。感谢this answer的想法。


3
投票

这是一个Xcode错误(Xcode 8.2.1),我已经向Apple报告过,当你有一个大的字典文字或一个嵌套的字典文字时会发生这种情况。您必须将字典拆分为较小的部分,并使用append方法添加它们,直到Apple修复该错误。

© www.soinside.com 2019 - 2024. All rights reserved.