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

And*_*ard 17 xcode autocomplete auto-populate ios

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

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

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

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

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

Ash*_*lls 44

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

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

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

  • 首先,确保Xcode已关闭,然后通过进入终端打开索引器警告消息级别:

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

  • 接下来,打开Console应用程序并单击Clear Display,然后将过滤器设置为"IDE"以仅显示我们感兴趣的消息.

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

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

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

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

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

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

  • 重复,直到所有错误消失.

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

  • 长答案兄弟 (2认同)

ban*_*isa 5

偶尔在Xcode 4.3.2上偶然发生在我身上,

我只是这样做:

Xcode>管理器>项目>选择项目>派生数据>单击删除按钮

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

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