133

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

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

我正在使用 Xcode 4.5.2。

有任何想法吗?

4

36 回答 36

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

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

于 2012-12-12T07:17:55.940 回答
70
  1. 从 Xcode 关闭该项目
  2. 打开 Xcode Organizer,找到有问题的项目
  3. 删除管理器中的派生数据文件夹
  4. 关闭/重新打开 Xcode

Nuking 派生数据是在所有 Xcode 行为不端的情况下尝试的第一件事

于 2014-09-13T09:11:55.937 回答
24

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

于 2015-02-17T01:05:33.363 回答
20
  1. 关闭任何打开的 Xcode
  2. rm -rf ~/Library/Developer/Xcode/DerivedData
  3. 右键单击您的 PROJECT_NAME.xcworkspace,选择“显示内容”,然后删除“xcuserdata”文件夹
于 2017-09-25T08:31:51.423 回答
9

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

class mainClass : mainClass
{
    ...
}
于 2015-09-08T13:40:17.867 回答
9

如果您尝试解决索引问题并且您在页面下方这么远,请尝试另一件事!

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

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

构建设置标志

如果编译器需要很长时间才能推断出复杂的表达式,则会导致警告。

警告

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

于 2018-04-23T21:32:32.553 回答
7

使用 Xcode 6 时,它说

等待制作

可能是 make 的一个实例已经在运行。终止进程和索引继续进行。愚蠢,但为我工作。

于 2015-07-17T20:37:24.683 回答
6
  • 首先,断开网络。您的有线网络和无线网络都应该关闭。
  • 第二,杀死com.apple.dt.SourceKitService进程。然后 XCode 将重新开始索引而不是卡住。

在此处输入图像描述

于 2017-08-10T11:19:29.923 回答
4

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

于 2016-07-11T13:38:57.577 回答
4

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

于 2017-02-08T08:01:01.273 回答
4

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

  1. 删除 project.xcworkspace
  2. 在终端上使用“pod install”重新安装 pod
  3. 它将创建一个新的 project.xcworkspace
  4. 打开新的 project.xcworkspace -> Clean -> Build
于 2018-04-02T08:51:17.017 回答
3

对我来说,完全关闭 Xcode 然后重新启动项目是可行的。

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

于 2015-12-04T07:04:37.380 回答
2

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

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

leaderboardController.leaderboardDelegate == self;

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

于 2014-01-10T23:56:28.237 回答
2

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

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

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

于 2016-10-31T12:14:54.393 回答
2

没有什么对我有用,我的项目太大(将目标c、、、和文件与 j2obj 合并)。我已经禁用了 Xcode 索引并且几个月没有代码完成工作(这很痛苦)。但最后我找到了解决方法。这个想法是保持 Xcode 对代码进行索引,但使用外部工具(如.c++swiftjavacputhrottle

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

冲泡安装 cputhrottle

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

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

我在这里用模式细节公开了我的“解决方案”:How to prevent Xcode using 100% of CPU when indexing large projects

于 2018-12-07T09:26:59.800 回答
2

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

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

或更容易

- 只需重新启动 Mac(通过互联网)

于 2020-08-02T21:23:02.903 回答
1

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

于 2015-07-03T23:21:24.187 回答
1

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

于 2015-09-01T00:49:00.180 回答
1

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

于 2016-03-01T02:31:34.933 回答
1

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

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

  1. 删除一些文件
  2. 关闭 Xcode
  3. 打开 Xcode
  4. 如果索引完成尝试重命名某些方法,如果可行,那么您删除的文件可能对 Xcode 有一些奇怪的东西。

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

于 2018-05-26T10:28:09.653 回答
0

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

于 2014-10-01T02:52:37.173 回答
0

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

于 2016-03-08T22:52:27.837 回答
0

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

于 2016-05-28T18:21:44.277 回答
0

最近在 XCode 7.3.1 上遇到了这个问题——对我来说,我注意到 CleanMyMac3 的 RAM 使用率达到 100%。在我重新启动机器后,这个问题神奇地自行解决了。然而,平心而论,我已经尝试了接受的答案,所以你需要在重新启动之前做同样的事情以防万一:-)

于 2016-07-18T11:29:29.717 回答
0

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

于 2016-09-07T10:20:37.427 回答
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
}
于 2016-09-17T16:11:52.607 回答
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) {
}

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

于 2017-05-03T22:49:46.247 回答
0

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

于 2018-04-05T18:18:55.297 回答
0

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

于 2018-05-12T11:56:52.750 回答
0

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

于 2019-05-20T20:37:14.127 回答
0

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

@EnvironmentObject var roomViewModel

我需要的地方:

@EnvironmentObject var roomViewModel: RoomViewModel

没有编译器错误,只是无休止的索引。在我修复了错误之后,项目很快就建成了。

于 2019-06-30T01:20:46.080 回答
0

是的,每次我尝试打开我的 Main.Storyboard Xcode 都会突然冻结。这仅发生在我的一个项目中,然后发生在我在 Xcode 上的所有项目中。

尝试了以下没有运气

  1. 删除 Xcode 并重新安装它。

  2. 因素重置我的mac。

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

解决方案[就我而言],我相信你们大多数人都会遇到这种情况。

我注意到名为“IBAgent-iOS”的进程消耗了我大部分的 CPU 资源。每次我想打开情节提要时,它都会消耗高达 97% 的 CPU 资源!

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

于 2020-07-27T14:01:15.227 回答
0

2022 | 算法做什么:

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

如果没有帮助:

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

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


如果没有帮助:

  1. 重启电脑

如果没有帮助:

  1. 右键单击您的 PROJECT_NAME.xcworkspace,选择“显示内容”,然后删除“xcuserdata”文件夹

如果没有帮助:

  1. 运行您的项目构建并附加警告。为此,您需要编写:

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

    到以下地方:

在此处输入图像描述

并在所有地方优化代码。


如果没有帮助:

Z. 卸载 XCode 并从头开始安装


如果没有帮助:

Z+1。El Belga 的答案https://stackoverflow.com/a/50541767/4423545

于 2021-12-30T06:03:52.003 回答
0

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

在 NavigationLink 中,我给了一个不带参数的 View 参数。它挂起构建和索引,但没有引发编译器错误。那酷。

这是我复制它的方式。在包含导航视图的顶级视图中,我在堆栈内的列表中有以下块。所以我的顶级视图的层次结构类似于(伪代码):

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)
                        }
                    }
                }
            }

whammo,redux 再次运行良好。

当我稍微修改数据模型时,我从 CompletedTaskApprovalView 中删除了所有内容,所以它看起来像这样(实际上只是一个占位符):

导入 SwiftUI

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

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

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)
                        }
                    }
                }
            }

工作正常。

在上面的实例化中添加了一个参数(但没有视图的 Struct 定义中添加一个参数)......它的行为与原始问题相同 - 似乎无休止地挂起构建和索引,并且从不吐出参数错误我会期待的。

            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% 令人失望。我不想进一步诊断它,但是......如果有人仍然遇到这个问题,请尝试一下;仔细检查您的参数和声明,也许您会发现类似的问题。

奇怪的。令人沮丧。令人困惑。恼人的。

于 2022-01-06T02:31:14.260 回答
-2

Command-Option-Shift-K 清理构建文件夹。

于 2016-05-20T01:14:11.823 回答
-2

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

所以 QuitXCode > 打开你的项目并确保只打开一个实例 > Clean > CleanBuild Folder in some cases > build.

它应该工作

于 2016-06-02T21:48:47.063 回答