Xcode 卡在索引上了

我工作了2个月的一个项目无缘无故停止工作,因为 Xcode 卡在了“索引”上。我不能再建这个项目了。如果我尝试构建,Xcode 会冻结,我必须强制退出。只有在这个项目中才会发生这种情况。

我试过清除所有的衍生数据,但没有帮助。

我用的是 Xcode 4.5.2。

有什么想法吗?

118911 次浏览
  1. 打开项目文件夹。
  2. 查找 ProjectName.xcodeproj 文件。
  3. 右键单击复制并粘贴到安全位置。
  4. 右击显示包内容。
  5. 查找 project.xcworkspace 文件并删除该文件。
  6. 重新打开项目并清理和重建。

如果您的问题没有得到解决,那么用备份文件替换该文件。

我遇到过类似的问题,Xcode 会花费大量时间建立索引,并且经常挂起构建项目,这时我不得不强制退出并重新启动 Xcode。非常烦人。

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

leaderboardController.leaderboardDelegate == self;

在解决了这个警告之后(通过正确声明实现的协议) ,Xcode 停止了错误行为。另外,我应该注意到,自从协议方法 曾经是实现以来,项目确实正确地执行了。正是因为 Xcode 不能 确认,所以协议实际上应该由类来实现。

  1. 从 Xcode 中关闭该项目
  2. 打开 Xcode Organizer,查找有问题的项目
  3. 删除组织者中的派生数据文件夹
  4. 关闭/重新打开 Xcode

在所有 Xcode 错误行为的情况下,第一件要做的事情就是核爆衍生数据

也停止运行应用程序。如果有另一个应用程序正在使用 xcode 运行,请先停止它,然后继续建立索引。

我遇到了这个问题,它是由一个20项的数组字面值引起的。必须切换到不同的语法。真傻。

在 Xcode 6.4中也有类似的问题。进度条显示“索引”为“暂停”。尝试删除 project.xcworkspace,然后如上所述删除派生数据。看起来没什么帮助。注意到上面的帖子也建议修复警告,而且因为我继承了这个包含180个警告的庞大项目,我对自己说,“这看起来像是修复警告的好日子吗?”。半小时后,当我修改警告时,我注意到“索引”进度条从10% 增加到了20% 左右。一个小时后,它是在50% ,然后又一个小时到80% ,然后在另一个半小时后完成!结论: 在上述建议中加入“长时间午餐或午睡”。

当使用 Xcode 6时,它说

等待制造

可能是 make 的实例已经在运行了。终止进程并索引收益。很傻,但对我有用。

我在 Xcode 7.0测试版中也遇到了同样的问题。 在我的例子中,PROJECT 和 TARGETS 之间“ Provisoning Profile”和“ Build Settings”的“ Product bundle Identity”的值是不同的。 我为它们设置了相同的值,并且对“ appName”和“ appNameTest”的 TARGETS 使用了相同的值。 然后关闭项目并重新开放。 解决了我的案子。

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

class mainClass : mainClass
{
...
}

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

我不认为这是原始问题的解决方案,但在删除文件和文件夹等之前,这是一个更简单的尝试。这个想法要感谢 这个答案

在我的例子中,删除派生数据目录没有帮助。显然,我有一个文件被另一个进程锁定,因为在关闭了几个终端窗口和 emacs,并终止了一个本地反应打包器进程之后,一切都解决了。

对我来说,原因是我打开 一样文件在两个 主编助理编辑在同一时间。我关掉助理编辑之后,就发过来了。(Xcode Version 7.2.1)

Command-Option-Shift-K 清理生成文件夹。

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

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

因此,QuitXCode > Open your project 并确保在某些情况下仅打开一个实例 > Clean > CleanBuild Folder > build。

应该可以

按住 alt > Product > Clean Build 文件夹

最近在 XCode7.3.1上遇到了这个问题——对我来说,我注意到 CleanMyMac3的 RAM 使用率达到了100% 。在我重新启动机器后,这个问题奇迹般地自行解决了。不过,公平地说,我已经尝试了已接受的答案,所以为了以防万一,在重新启动之前您也应该这样做: -)

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

我在 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
}

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

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

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

这是一个 Xcode bug (Xcode 8.2.1) ,我已经向苹果公司报告过,当你有一个大的字典文字或嵌套的字典文字时,它就会发生。你必须把你的字典拆分成更小的部分,并用 append 方法添加它们,直到苹果修复这个错误。

我的案例: 它不是 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) {
}

真相是,它令人担忧(因为没有语法错误,或任何类型)

  • 首先,断开网络。有线网络和无线网络都应该关闭。
  • 第二,停止 com.apple.dt.SourceKitService进程。然后 XCode 将重新开始索引,而不是停滞不前。

enter image description here

  1. 关闭所有打开的 Xcode
  2. rm -rf ~/Library/Developer/Xcode/DerivedData
  3. 右键单击 PROJECT _ NAME. xcworkspace,选择“ show content”,然后删除“ xcuserdata”文件夹

这发生在我身上。如果你使用可可豆,这样做:

  1. 删除 project.xcworkspace
  2. 在终端上使用 pod install重新安装吊舱
  3. 它将创建一个新的 project.xcworkspace
  4. 打开新的 project.xcworkspace
  5. - > 清洁
  6. - > 建造

对于 XCode 9.3索引问题-卸载 XCode 并从零开始重新安装。

另一件事,如果你试图解决索引问题,你这么远的网页!

尝试将此标志添加到生成设置中。

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

build settings flag

如果编译器需要很长时间来推断复杂表达式,那么它将导致警告。

warning

这可能会导致构建错误,在您找到缓慢的表达式并删除构建标志之后,这个错误将消失。

这个问题发生在我的机器没有交换空间的时候。关闭了几个程序和浏览器标签,在30分钟的停滞之后,这个版本突然成功了。与我这边的派生数据、锁定文件等无关。

我在 Xcode 9.3.1的一些项目中遇到过这个问题,在我的案例中,这个问题是由于某些 Xcode 不喜欢的快速代码造成的。这个问题很难解决,因为很难找到是什么文件导致了这个问题。

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

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

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

我的项目太大了(将目标 cc++swiftjava文件与 j2obj 合并)。我已经禁用了 Xcode 索引,并且在没有代码完成的情况下工作了几个月(这是一种痛苦)。但我终于找到了解决办法。其思想是让 Xcode 为代码建立索引,但是使用 cputhrottle这样的外部工具来限制其 CPU 使用量。

因此,首先您需要在终端安装 cpu油门

酿酒安装节流阀

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

(pgrep-f com.apple.dt.SKAgent)20

我在这里用模式细节展示了我的“解决方案”: 如何防止 Xcode 在索引大型项目时使用100% 的 CPU

我已经试过所有列出的东西,索引是保持冻结。这对我很有帮助: 如果你的索引是冻结的,并且你有一个或多个快速的进程占用了你99% 的 CPU ——只要关闭这个快速的任务,稍等一下,进度就会改变。它可以重复,直到它达到完成,在我的情况下,我杀死了过程7次,但在最后,索引已经完成!

在 SwiftUI 项目中遇到这个问题。原来我的一个 SwiftUI 视图有一个声明错误的变量。我有:

@EnvironmentObject var roomViewModel

我需要的地方:

@EnvironmentObject var roomViewModel: RoomViewModel

没有编译器错误,只有无穷无尽的索引。在我修复错误后,项目建立得很快。

是的,每次我尝试打开我的主要。故事板 Xcode 突然冻结。这只发生在我的一个项目上,然后它发生在 Xcode 上的所有项目上。

运气不好中尝试了以下方法:

  1. 删除 Xcode 并重新安装。

  2. 因素重置了我的 Mac。

  3. 创建一个新项目并将文件夹移动到新项目 我。

解决方案 [在我的情况下] ,我相信这发生在你们大多数人身上。

我已经注意到,名为 “ IBAgent-iOS”的进程消耗了我的大部分 CPU 资源。每次我想打开故事板,它都会消耗高达97% 的 CPU 资源!

因此,我需要去活动监视器 > 搜索这个过程名称 “ IBAgent-iOS”(主要出现在顶部) > 点击它和强制退出。

我正在使用 Xcode 11.4.1,并且在几个项目中遇到了同样的问题。每当互联网连接中断时,索引就会启动。最好的解决方案(这只是基于我对这个问题的观察得出的结论) :

关闭互联网,关闭“ com.apple... .”进程,然后重启 Xcode (打开连接)

或者更简单

只要重新启动 Mac (与互联网)

2022 | 算法怎么做:

  1. 打开活动监视器,杀死那里的 com.apple.dt.SKAgent

如果没有帮助:

  1. 关闭 Xcode (cmd + Q)。在终端运行命令:

rm -rf ~/Library/Developer/Xcode/DerivedData


如果没有帮助:

  1. 重启电脑

如果没有帮助:

  1. 右键单击 PROJECT _ NAME. xcworkspace,选择“ show content”,然后删除“ xcuserdata”文件夹

如果没有帮助:

  1. 在附加警告的情况下运行项目生成:

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

    下列地点:

enter image description here

并在所有地方优化代码。


如果没有帮助:

卸载 XCode 并从头开始安装


如果没有帮助:

Z + 1. El Belga 的答案

我知道这是一个相当老的问题,但问题仍然存在。以下是我发现的经历。

在 NavigationLink 中,我给一个视图提供了一个参数,而这个视图没有参数。它挂起了构建和索引,但没有出现编译器错误。这是 没有酷。

我是这么复制的。在包含导航视图的顶级视图中,我在 Stack 中的 List 中包含以下块。因此,我的顶层视图的层次结构类似于(伪代码) :

Body {
VStack {
[CustomViewForPageHeader]
List {
(the code block pasted below)
(some other things)
}
}
}

冒犯的部分是这样的:

            if 0 < viewModel.taskUpdates.count {
Section( "Chore updates"){
ForEach(viewModel.taskUpdates, id:\.id){ update in
if "complete" == update.statusType {
NavigationLink {
CompletedTaskApprovalView( update: update )
} label: {
Text(update.formattedMessage)
.padding(.vertical)
}
}
if "reject" == update.statusType {
Text(update.formattedMessage)
.padding(.vertical)
}
}
}
}

记得我在重新构造一些数据时删除了参数,我对编译器没有吐在这上面感到沮丧。我删掉了整句台词,看起来就像:

            if 0 < viewModel.taskUpdates.count {
Section( "Chore updates"){
ForEach(viewModel.taskUpdates, id:\.id){ update in
if "complete" == update.statusType {
NavigationLink {
//CompletedTaskApprovalView( update: update )
} label: {
Text(update.formattedMessage)
.padding(.vertical)
}
}
if "reject" == update.statusType {
Text(update.formattedMessage)
.padding(.vertical)
}
}
}
}

然后你瞧,哇塞,它运行得很好。

取消注释它 还有删除了参数..。

            if 0 < viewModel.taskUpdates.count {
Section( "Chore updates"){
ForEach(viewModel.taskUpdates, id:\.id){ update in
if "complete" == update.statusType {
NavigationLink {
CompletedTaskApprovalView()
} label: {
Text(update.formattedMessage)
.padding(.vertical)
}
}
if "reject" == update.statusType {
Text(update.formattedMessage)
.padding(.vertical)
}
}
}
}

哇塞,复制,再一次,成功了。

当我稍微修改一下数据模型的时候,我把 CompletedTaskApprovalView 中的所有内容都去掉了,所以它看起来像这样(字面意思就是一个占位符) :

导入 SwiftUI

struct CompletedTaskApprovalView: View {
    

var body: some View {
Text("Approve chores")
.font(.title)
}
}

编译器不应该让我尝试给它一个参数。所以我觉得这很奇怪,我想知道我的视图的代码文件是否有某种奇怪的不可见的损坏。在顶层视图的文件中,我在底部添加了一个新视图(Some TestView) ..。

struct SomeTestView: View {
var body: some View {
Text("this is just a thing")
}
}

并添加到我的循环. 。

            if 0 < viewModel.taskUpdates.count {
Section( "Chore updates"){
ForEach(viewModel.taskUpdates, id:\.id){ update in
if "complete" == update.statusType {
NavigationLink {
//CompletedTaskApprovalView()
SomeTestView()
} label: {
Text(update.formattedMessage)
.padding(.vertical)
}
}
if "reject" == update.statusType {
Text(update.formattedMessage)
.padding(.vertical)
}
}
}
}

没问题。

在上面的实例化中添加了一个参数(但是 没有在视图的结构定义中添加了一个参数) ... ... 它的行为和最初的问题一样——挂起构建和索引,看起来没完没了,而且从来没有出现我预期的参数错误。

            if 0 < viewModel.taskUpdates.count {
Section( "Chore updates"){
ForEach(viewModel.taskUpdates, id:\.id){ update in
if "complete" == update.statusType {
NavigationLink {
//CompletedTaskApprovalView()
SomeTestView( fish: "sandwich" )
} label: {
Text(update.formattedMessage)
.padding(.vertical)
}
}
if "reject" == update.statusType {
Text(update.formattedMessage)
.padding(.vertical)
}
}
}
}

所以这很奇怪,而且100% 令人失望。我尽量避免进一步诊断,但是... ... 如果还有人遇到这个问题,试一试; 仔细检查您的 parms 和声明,也许您会发现类似的问题。

奇怪,沮丧,困惑,烦人。

这招对我很管用

  1. 再次安装吊舱。 吊舱安装
  2. 运行另一个包含 pod 文件的简单项目。
  3. 现在运行您的项目。