Xcode 4.x中的代码自动完成/语法突出显示问题

时间:2012-03-20 09:27:52

标签: ios xcode autocomplete auto-populate

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

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

这从未发生过,所以我很困惑为什么它现在发生了,而且只在我的一个项目上。我搜索这个网站已经有一段时间了解任何修复,我试图清理Derived Data,退出Xcode,从Xcode项目中删除工作区和用户文件并重启,但这样做后,自动完成工作了一段时间,然后在约30秒的编码后再次中断。

我有时可以看到自动完成的解决方案,但只是纯文本(没有类指示符),然后有时它会完全停止工作。

还有其他人经历过这样的事情并且可以提供一些解决方案吗?

8 个答案:

答案 0 :(得分:43)

我长期遭遇一个不断失去自动完成和语法高亮的项目。删除Derived Data文件夹并重新启动Xcode会暂时修复它,最终几乎成为肌肉记忆。使用包含多个项目的工作空间似乎加剧了我的问题,其中许多项目彼此依赖。事实证明问题出在clang索引器上。该项目可以干净地编译,但是查看索引器的输出时会出现错误。修复所有这些解决了我的问题。

在执行任何操作之前:确保所有 所有中的目标工作区中的项目干净地编译。那没有 ANY 警告。这对我来说是一个很大的失败 - 我的旧目标只是没有干净地编译。其中一些是未使用的,可以删除,另一些是非ARC,它们在已转换为ARC的目标中使用模块(也转换了这些目标),有些只需要修复代码。

一旦你解决了所有这些问题,我们需要知道的第一件事是索引器失败,通过完成项目的完整索引。

  • 首先,确保Xcode已关闭,然后调高索引器警告 输入终端的消息级别:

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

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

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

  • 要查找错误,请将控制台过滤器更改为“错误:” - 我们的目标是将这些错误减少为零。

  • 我发现的大多数错误都缺少头文件。 Xcode本身似乎比索引器更聪明。它似乎能够从索引器不能的其他项目中找到并包含头文件。

  • 因此,在您看到“致命错误:'somefile.h'文件未找到”的任何地方,请确保将该文件的路径添加到用户标题搜索路径在目标的构建设置中。我发现这样做的最好方法是双击该字段以获取弹出窗口,然后将文件夹从取景器拖入其中。这会添加一个新条目,但假设它在同一个工作区中,它会添加一个相对文件路径(这在将来移动工作区文件夹时很重要)。如果您为同一个项目设置了多个目标,则可以在项目而不是目标级别设置搜索路径,并将目标搜索路径设置为 $(继承)

    < / LI>
  • 您可能会遇到与库或框架类似的问题 - 再次更新相应的搜索路径。

  • 修复了一些错误,关闭Xcode,清除控制台,删除项目的Derived Data,打开Xcode并让它再次索引。

  • 重复操作,直到所有错误都消失。

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

答案 1 :(得分:5)

偶尔也会在Xcode 4.3.2上发生,

我只是这样做:

  

Xcode&gt;组织者&gt;项目&gt;选择你的项目&gt;衍生数据&gt;单击删除按钮

这也会删除索引。然后我通常重新启动Xcode并开始重新索引,然后我再次获得语法高亮和自动完成功能。 (我甚至不总是重新启动Xcode - 但是从屏幕上开始几个小时的休息时间对你的glazball来说总是一件好事!)

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

答案 2 :(得分:4)

大多数时候我遇到这个问题,删除DerivedData会为我修复它,但有一个案例它并没有。转向我无法将我创建的源文件连接到任何特定目标。一旦我将它连接到目标源突出显示开始工作。如果其他解决方案不起作用,这可能是您的问题。

答案 3 :(得分:3)

  

在构建设置中搜索“GCC_INCREASE_PRECOMPILED_HEADER_SHARING”   并将其更改为YES。 - 这对我有用。

GCC_INCREASE_PRECOMPILED_HEADER_SHARING

答案 4 :(得分:2)

真的很尴尬。我错误地取消了Xcode首选项&gt;中的Check标记。文字编辑&gt;代码完成,我尝试了所有可能的解决方案。

在深入研究任何其他解决方案之前,请检查此偏好:

Xcode autocomplete preference

答案 5 :(得分:0)

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

  1. 注释掉项目.pch文件中的所有条目(通常当你这样做时,Xcode会选择自动完成)
  2. 清洁项目
  3. 取消隐藏.pch文件
  4. 重建项目
  5. 现在您应该能够看到正确的语法突出显示,并且自动完成应该是正确的。

答案 6 :(得分:0)

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

我必须删除所有项目的所有派生数据,执行Clean项目并重新启动Xcode

惊人

答案 7 :(得分:0)

那到底是什么意思?我没有从编译器收到任何File not found错误。修复了UnitTest UITestTargetCompiler Sources Project's Build Phases删除replaceValue = CONCAT(',',g_currTicketID,',') = ',1,' stringToReplace = CONCAT(',',using_id,',') = ',1,11,21,31,' using_id = TRIM(BOTH ',' FROM REPLACE(stringToReplace, replaceValue, ',')) 上的某些丢失文件链接的问题。

enter image description here