【问题标题】:Xcode swift indexing foreverXcode 快速索引永远
【发布时间】:2014-09-07 02:18:05
【问题描述】:

我目前正在使用 swift 和 Xcode 6(Beta 3)开发 iOS 应用。

到目前为止一切都很好,但是现在随着我的项目的增长,Xcode 突然开始索引并且它一次又一次地这样做,使得 Xcode 几乎无法使用。

我在网上搜索过类似的问题并尝试了解决方案,但没有一个有帮助。 即使禁用索引进程 (defaults write com.apple.dt.Xcode IDEIndexDisable 1) 也不会阻止 Xcode 这样做。

索引时,我的 CPU 使用率高达 300% 以上,导致风扇以最高速度运行。

在 Activity Monitor 中有几个名为“swift”的任务,每个任务占用大约 1GB 内存。

【问题讨论】:

标签: xcode indexing swift


【解决方案1】:

几周前我在克拉科夫的快速紧缩中遇到了这个问题。我们在 github 上有代码,在 macbook 上遇到了索引问题,我们尝试在其他 2 台 macbook 上提取 repo,结果相同。

这显然是一个错误,我不知道是什么原因造成的,我们尝试了我们能想到的任何方法(清理、清理构建文件夹、手动删除不在 repo 中的文件、重新启动、终止进程等),并且几个小时后剩下要做的就是从头开始创建一个新的 xcode 项目并从其他项目手动导入文件

从那以后再也没有发生过,无论是在那个项目上还是在其他项目上。

【讨论】:

  • 在没有解释的情况下投反对票会让您感到抱歉吗?否决票,告诉我们为什么?我赞成纠正无法解释的反对票。
  • 谢谢@Zaph - 我同意,应该在投反对票之后做出解释。我的不是解决问题的方法......因为我们找不到任何问题,所以我只是分享了我的经验。如果有人有解决方案,那么他非常欢迎
  • 其实答案中有一个解决方案:“创建一个新的Xcode项目”。
  • :) 这是解决问题的一种激烈而残酷的方法,被用作最后的手段。但它确实解决了问题。
  • ??给了我这个奇怪的索引错误
【解决方案2】:

杀死名为 'swift' 的进程,然后检查 xcode 中的错误会给您带来麻烦的部分代码。 swift中有一些错误需要规避。

要终止进程:应用程序 > 实用程序 > 活动监视器。然后找到“swift”进程,双击并选择退出或强制退出。

【讨论】:

  • 是的,我追查到这确实是 swift 代码中的一个问题。感谢您的回答!
  • 杀死swift 进程会停止索引。但是当我编译时它仍然冻结。我不得不删除我的一些 Swift 代码并且它有效!似乎我的开关盒中case serverBtn as SKSpriteNode: 中的as 部分会导致问题。我在 Xcode 6 beta 7 中。
  • 这使我朝着正确的方向前进。在我的例子中,Xcode 的子进程被称为 SourceKit 之类的东西(应该记下它,哎呀!)。我杀了它,它重新启动,进度条走得更远,然后又挂了。再次杀死它,它重新启动并且进度条完成。谢谢!
  • 请详细说明如何“杀死名为 swift 的进程并检查 Xcode 中的错误”。
  • 杀死进程:应用程序>实用程序>活动监视器...然后找到“swift”进程并终止它...这对我有用...虽然我也不明白“检查 XCode 中的错误”
【解决方案3】:

一行中的字符串连接过多会导致麻烦。也帮了我。 原来是那里的余震山指点:Xcode 6 Beta not compiling

【讨论】:

    【解决方案4】:

    已解决:我从项目中删除了最近添加的文件,问题消失了。然后我开始一个一个地添加文件,直到问题再次出现。所以我找到了导致问题的文件。然后我从该文件中删除了最近添加的代码,问题又消失了。

    这样,我找到了导致该行为的一段代码。

    【讨论】:

    • 就我而言,包含所有设备型号的文字字典的定义导致了无休止的索引......删除此语句后,XCode 接受再次工作。这很奇怪!
    • 我在 Xcode 6.3 发行版中的文字字典声明也遇到了同样的问题
    • 我也是!同样的问题
    • 看到这个帖子和回复后,我回过头来查看我的dictionaryLiteral,因为我有这个问题几天,结果发现我的字典中有一些未使用的元素已删除在约束部分,并在情节提要中为它们设置了一些自动布局;当我删除字典中的所有内容时,一切都开始感觉像以前一样,并且很快就不需要很长时间来索引或运行项目!干杯
    【解决方案5】:

    我的代码中有同样的问题。我的解决方案是在我的代码中删除数组中的所有空格。

    例如。

      struct Objects {
    
      let objectA = ["text1", 
                     "text2", 
                     "text3", 
                     "text4"] }
    

    // 噪声、CPU 100% 和永远索引。解决办法是……

    struct Objects {
        let objectA = ["text1","text2","text3","text4"]}
    

    // 已解决 制作没有空格的数组或字符串。

    【讨论】:

    • 有趣的是,对我来说删除 crlf 以获得更好的字典可读性也解决了这个问题。索引卡在无限循环中,结构的编译需要永远
    • 这也解决了我的问题!这是一本字典,但同样的区别,基本上只需要保持在同一行!
    【解决方案6】:

    我正在创建这样的字典

    var dic1 = [
        "isDestination" : self.isDestination ?? false,
        "price" : self.price ?? ""
    ]
    

    self.priceInt 类型,我将它的后备值作为空字符串 给出,这搞砸了Xcode 编译。

    【讨论】:

      【解决方案7】:

      我在一次调用中遇到了同样的问题,将 11 个 NSLayoutConstraint 对象添加到数组中。

      解决方案是将代码分成几个调用,每个调用只向数组中添加 3 个对象。很奇怪。

      那是在 Xcode 6.4 中

      【讨论】:

        【解决方案8】:

        我也遇到了同样的问题,我花了很长时间才解决它。我很确定我已经在互联网上看到了有关此问题的所有问题,并且我尝试了所有解决方案。原来我所要做的就是......

        重启我的电脑

        【讨论】:

        • 这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review
        • @EridB 这怎么不试图提供答案?这可能是完全错误的,but that doesn't mean we should abuse the review queues to delete it.
        • @Undo 我不知道那个讨论,感谢您指出。至于the answer,我们可以把它留在那里,但仍然没有描述与可能导致此问题的原因相关的任何内容。想象一下,如果到处都有这样的答案。 :)
        • @EridB Idk 是什么导致了问题。我所知道的是我有完全相同的问题,如果有人告诉我只需重新启动我的计算机就可以解决它,它会为我节省大量时间。哈哈。我相信所有可能的解决方案对每个问题都很重要。否则我不会发布它
        • 我很高兴这个答案在这里,它解决了我的问题,如果有人因为“未回答”而将其删除,我可能仍然会用头撞墙.
        【解决方案9】:

        我在创建 C++ 项目时遇到了 XCode 6.3 的这个问题。在切换到 SubLime 开发之前,我最后的努力是删除 XCode 应用程序并重新安装。这是一个漫长的过程,但我的 XCode 版本现在更新到 7.3,一切正常。

        因此,如果似乎没有其他工作,您可以尝试从您的应用程序文件夹中删除 XCode,然后重新安装。请确保您没有删除任何要保留的项目文件。

        【讨论】:

          【解决方案10】:

          Xcode 7.3 发生在我身上

          必须清理 Xcode 缓存的所有内容才能解决它。

          解决方案:

          rm -frd ~/Library/Developer/Xcode/DerivedData/*
          
          rm -frd ~/Library/Caches/com.apple.dt.Xcode/*
          

          【讨论】:

          • 我这样做并重新启动了我的 Mac 并解决了(使用 Xcode 8)
          • 我做过也没有工作。有一个文件不应该出现在我的项目中,因为我正在编辑一个包的一部分。我不得不删除文件(只需删除引用)并且它有效。有时是小事。 Xcode 在复制文件时有点乱总是检查它们是否在正确的文件夹中(在 finder 中)
          【解决方案11】:

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

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

          导致冻结的类继承自身。 Xcode 没有消息提示。你可以把这个当作可能的原因~。

          【讨论】:

            【解决方案12】:

            我遇到了这个问题,6 小时后(在尝试一切并逐步复制资源再次构建新项目之后)我发现了我的问题:

            class A : A {
            ...
            }
            

            通过复制/粘贴的事实,我有一个扩展自身的类,这让索引变得疯狂。

            【讨论】:

              【解决方案13】:

              这绝对是一个 Xcode 错误,我向 Apple 报告了这个问题。当您有大型字典文字或嵌套字典文字时。您必须将字典分解为更小的部分并使用 append 方法添加它们,直到它们修复错误。 Xcode 8.2.1 (8C1002)

              【讨论】:

              • dic[key] = value 将条目添加到您的字典中,正如您所说,问题已解决。
              【解决方案14】:

              这是 Xcode 错误。一行连接导致的问题:

              var value = "some text" // it can be String or Array
              value = value + value1 + value2 + value3 + value4 + value5 + value6 // etc
              

              此更正修复了此错误:

              var value = "some text"
              value += value1
              value += value2
              value += value3
              value += value4
              value += value5
              value += value6
              

              【讨论】:

              • 我也有类似的!
              【解决方案15】:

              我的特殊问题是包含大量数据的相当长的文字字典。

              我的解决方案是了解 Xcode 索引并没有“卡住”,而是需要很长时间。

              所以我只需要等待比预期更多的时间。

              【讨论】:

              • 将对象添加到字典中,而不是字典文字,如 dic[key] = value ,你会很高兴:)
              【解决方案16】:

              我的目的是将带有String 扩展名的新文件拖到项目中,而不是将其添加到所有必需的目标中。 希望对某人有所帮助。

              【讨论】:

                【解决方案17】:

                备份您的项目删除最后一个并重新启动 xcode 简单:-)

                【讨论】:

                  【解决方案18】:

                  对于 Xcode 9.1,我也遇到了同样的问题。 所以我查看了活动监视器。有 swift 进程在 100% 以上。双击它并退出。 完毕。现在它工作正常。

                  【讨论】:

                    【解决方案19】:

                    我去了工具->任务和上下文->清除上下文,这似乎终于让计算机休息了!

                    【讨论】:

                      【解决方案20】:

                      enter image description here

                      当我的 Xcode 是 9.2 时,我遇到了这个问题。首先,我删除了 xcworkspace 文件,根据其他人的回答进行了清理和构建。但它没有用。 然后我将 Xcode 更新到 9.3 它也没有用。我检查了我的代码,发现最近写的代码让 Xcode Indexing 永远:

                      TimeInterval(3600*24*(-randomDay))
                      

                      然后我修改了它:

                      TimeInterval(-3600*24*randomDay)
                      

                      成功了。 我发现很多情况都会导致Xcode工作异常。所以我认为正确的解决方案是想想你最近为你的项目做了什么

                      【讨论】:

                        【解决方案21】:

                        这是我在另一个 stackoverflow thread 上发布的与 Xcode 索引问题相关的解决方法。这个问题看起来更迅速相关,但我的解决方法在这里也可能有用。所以就在这里。我的项目非常大(将目标 cc++swiftjava 文件与 j2obj 合并),这里的答案都没有解决索引问题。其想法是使用cputhrottle 之类的外部工具来限制 Xcode 索引进程的 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

                        【讨论】:

                          【解决方案22】:

                          在我的情况下,问题是由一些算术和引起的。 我正在以编程方式创建一个包含所有不同框架的collectionView:

                          cell.textView.frame = CGRectMake(8 + 10 + 12, 0, 150 + 6 + 6 + 4, 50)
                          

                          我刚刚改成:

                          cell.textView.frame = CGRectMake(30, 0, 166, 50)
                          

                          它可以帮助我更轻松地计算出边距和填充,但是仅将总和的结果将构建速度从 5 到 7 分钟更改为 20 秒左右。

                          【讨论】:

                            【解决方案23】:

                            还有一件可能的事情,可能会导致这种行为: 出于调试目的,我更改了一周前设置的系统时间 - 我有无限索引。一旦我把时间倒回去 - 索引就停止了。

                            【讨论】:

                              【解决方案24】:

                              在我的情况下,我打开了一个使用以前文件构建的应用程序的模拟器。只需关闭 de emulator

                              【讨论】:

                                【解决方案25】:

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

                                【讨论】:

                                  【解决方案26】:

                                  对我来说,这是导致问题的循环继承:

                                  class CustomButton: CustomButton {
                                      ...
                                  }
                                  

                                  以及代码中最近出现的各种其他查找/替换错误。 Xcode 没有将它们突出显示为错误,而是继续索引。

                                  【讨论】:

                                    【解决方案27】:

                                    我今天意识到,与 Xcode 一起运行 Apples Playgrounds 应用程序时,我有同样的症状。也许这就是早期情况的根本原因。所以就我而言,关闭 Playgrounds 就可以了。

                                    【讨论】:

                                      【解决方案28】:

                                      没有任何答案对我有帮助。我尝试了多种方法,例如:

                                      设备和模拟器 - Wifi 连接设备

                                      断开所有可以无线连接的设备。

                                      移除 Xcode 的缓存,派生数据:

                                      rm -frd ~/Library/Developer/Xcode/DerivedData/*
                                      rm -frd ~/Library/Caches/com.apple.dt.Xcode/*
                                      

                                      删除 Xcode 的默认值

                                      defaults delete com.apple.dt.Xcode
                                      

                                      解决方案

                                      对我来说有帮助的是重命名项目文件夹。一旦我这样做了,一切又开始工作了。

                                      【讨论】:

                                        【解决方案29】:

                                        就我而言,我尝试了在互联网上找到的所有建议,但没有任何效果。

                                        对我有用的解决方案是在可以索引的 xcode 上运行另一个项目,一旦索引完成,我关闭 xcode 并在第一个有索引问题的项目上打开它,它可以工作。

                                        不知道为什么,但它有效:)

                                        【讨论】:

                                          猜你喜欢
                                          • 1970-01-01
                                          • 2017-03-21
                                          • 2013-09-06
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 2018-11-27
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 1970-01-01
                                          相关资源
                                          最近更新 更多