在XCode 4.x中使用代码自动完成/语法高亮显示问题

在我的一个项目中,我在XCode中遇到了一个相当奇怪的问题。

当我开始写我的代码时,我习惯于自动完成为我提供许多条目。 由于某种原因,从昨天开始,这已经停止了工作。 我现在得到了奇怪的自动完成条目,如“and”,“the”,“Andy”,“MyCompanyName”等

这从来没有发生过,所以我很困惑,为什么现在发生了,只有我的一个项目。 我search了这个网站相当一段时间的任何修复,我试图清理派生数据,退出XCode,从XCode项目删除工作区和用户文件,并重新启动,但这样做后,自动完成工作一段时间,然后在编码约30秒后再次中断。

我有时可以看到自动完成的解决scheme,但只是纯文本(没有阶级指标),然后有时完全停止工作。

有没有人经历过这样的事情,可以提供一些解决scheme?

我经历了很长时间的一个项目,失去了自动完成和语法突出。 删除派生数据文件夹并重新启动Xcode将暂时修复它,最终几乎成为肌肉记忆。 我的问题似乎因使用包含多个项目的工作空间而恶化,其中许多项目彼此依赖。 事实certificate,问题是与铛指数。 该项目将干净地编译,但看着索引器的输出它是乱七八糟的。 修复所有这些解决了我的问题。

任何事之前 :确保工作区中所有项目中的所有目标都干净地编译。 这没有任何警告。 这是我的一个很大的失败 – 我有旧的目标,没有干净的编译。 其中一些未被使用,可以被删除,另外一些是非ARC,在已经被转换为ARC的目标中使用了模块(也转换了这些目标),有些只需要修复代码。

一旦你解决了所有这些问题,首先我们需要知道索引器失败的地方,通过做一个完整的项目索引。

  • 首先,确保Xcode已closures,然后在terminal中input索引器警告消息级别:

    defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3 
  • 然后find你的项目/工作区的Derived Data文件夹(可能〜/ Library / Developer / Xcode / DerivedData / 你的项目名称 – 一些乱码 ),并删除它(但保持Derived Data文件夹打开,因为你可能不得不去回来,做几次。

  • 接下来,打开控制台应用程序并单击清除显示,并将筛选器设置为“IDE”,以仅显示我们感兴趣的消息。

  • 最后,打开Xcode和导致你的问题的项目/工作区,你会看到控制台开始填满消息。

  • 要查找错误,请将控制台filter更改为“错误:” – 我们的目标是将其减less到零。

  • 我发现的大部分错误都是头文件丢失。 Xcode本身似乎比索引器更聪明。 它似乎能够find并包含索引器不能的其他项目的头文件。

  • 所以,无论你在哪里看到“ 致命错误:'找不到'somefile.h'文件 ”,请确保将该文件的path添加到目标的构build设置中的用户头部searchpath 。 我发现这样做的最好方法是双击该字段来获得popup窗口,然后将该文件夹从查找器拖到该窗口中。 这增加了一个新的条目,但假设它在同一个工作区中,它添加了一个相对的文件path(这对于将来移动工作区文件夹非常重要)。 如果同一项目有多个目标,则可以在项目而不是目标级别设置searchpath,并将目标searchpath设置为$(inheritance)

  • 您可能会遇到与库或框架类似的问题 – 再次更新适当的searchpath。

  • 一旦你修正了一些错误,closuresXcode,清除控制台,删除项目的派生数据,打开Xcode,并让它重新索引。

  • 重复,直到你所有的错误都消失了。

一旦你在这个好地方,代码自动完成和语法高亮应该像一个魅力:)

在Xcode 4.3.2上偶尔也会发生这种情况,

我只是这样做:

Xcode>pipe理器>项目>select您的项目>派生数据>单击删除button

这也删除了索引。 然后我通常重新启动Xcode,它开始重新索引,我得到我的语法高亮和自动完成了。 (我甚至不总是重新启动Xcode – 但是从屏幕开始rest几个小时的借口对于你的glazball来说总是一件好事!)

很less发生,这是相对无痛的。

大多数时候我遇到这个问题,删除DerivedData修复它,但它没有。 打我没有连接我创build的源文件到任何特定的目标。 一旦我连接到一个目标源突出显示开始工作。 如果其他解决scheme不起作用,这可能是你的问题。

在构build设置中search“GCC_INCREASE_PRECOMPILED_HEADER_SHARING”并将其更改为YES。 – 这对我有用。

GCC_INCREASE_PRECOMPILED_HEADER_SHARING

它真的很尴尬。 我错误地取消了XCode Prefernces> Text Editing> Code Cmpletion中的复选标记,并尝试了所有可能的解决scheme。 在这里输入图像描述

在挖掘任何其他解决scheme之前,请检查这一点。

您可以通过以下方式解决此问题:

  1. 注释掉项目.pch文件中的所有条目(通常当你这样做的时候,Xcode将会select自动完成)
  2. 清理项目
  3. Uncommening .pch文件返回
  4. 重build项目

现在,您应该能够看到正确的语法高亮显示,并且自动完成应该是正确的。

只删除失败项目的派生数据是不够的

我不得不删除所有项目的所有派生数据,做了一个干净的项目,并重新启动XCode

惊人

这是什么东西? 我没有收到来自编译器的任何File not found错误。 修正了从Project's Build Phases Compiler Sources 删除 UnitTestUITestTarget 缺less的一些文件链接 Project's Build Phases

在这里输入图像描述