2010-01-26 57 views
78

我发现在各种情况下,Xcode 3.1(Leopard)中的Objective-C代码可能无法在打字后获得适当的语法着色,或者失去了着色功能。Xcode:代码丢失语法着色

这不仅仅是新的自定义符号的“刷新”问题,而且还会影响Cocoa框架符号。

有时CMD-a选择代码页上的所有文本会使着色(重新)出现,有时双击一行来选择它将起作用,有时我必须在符号中添加/删除空格让这个符号变成(重新)颜色。重建或关闭/重新开放项目可能会或可能不会。

这是Xcode的一个已知问题吗?对于我这么讨厌的事情,我并没有在SO和我所期望的其他地方找到充分的讨论。

是否有任何命令强制全局语法重新着色?

+0

另外这里http://stackoverflow.com/questions/1627033/xcode-code-sense-color-completion-not-working/33142213#33142213检查我的答案 – 2015-10-15 07:19:18

回答

0

打开项目设置(项目>编辑项目设置菜单),然后单击重建代码感官指标按钮,在一般标签。这将重新创建Xcode用于语法着色的索引。

这个过程可能需要一段时间较大的项目,这样你就可以检查活动窗口的进度(窗口>活动菜单)。

+2

时间过了一段时间后,这并不能解决我的问题。我必须做错事,因为XCode根本不打扰突出显示语法或显示自动完成。 – Jessedc 2010-02-05 07:19:06

+1

请确保您针对以下问题记录针对Apple的错误:bugreport.apple.com。 – 2010-04-15 00:35:30

1

我最近有一个类似的问题,所有的着色和自动完成都停止了为内置框架工作,我自己的类仍然工作。有人向我推荐我关闭构建设置中的“运行静态分析器”。这很奇怪,但它工作。

0

此外,在XCode4中没有按钮来重建代码检测索引。

+0

我在某处读到这可能是因为XCode4不再需要代码感索引。我认为它直接使用新的Clang语法分析,而不是保留单独的索引。这也是为什么代码建议更精确的原因,因为它只是建议从编译器的角度来看有意义的代码完成。 – markquezada 2011-04-08 19:55:25

+1

原来有一种方法 - http://stackoverflow.com/questions/1627033/xcode-code-sense-color-completion-not-working/5958336#5958336 – Arkaaito 2011-05-11 01:42:51

13

只需选择谁失去了该文件的语法着色,出版社编辑>语法着色>(选择语言(目的C++为前),而不是“默认”

+2

这发生在我身上。不知道为什么XCode将默认为通用而不是仅适用于一个文件的正确文件类型,但这一步解决了它。我已经尝试清理和删除派生数据,我认为这是一个罪魁祸首。 – Rudi 2013-02-19 23:59:24

+0

欢呼...苹果为我选择AppleScript lol 感谢队友 – 2018-03-11 03:12:35

0

我有同样的问题,并通过更新解决了这个我构建设置使用系统默认的编译器,LLVM GCC 4.2。

似乎有多种因素。

43

我有同样的问题有一个项目,在Xcode 3天晴及该语法高亮和代码在Xcode 4中完成已经打破。我花了一天的更好的时间来弄清楚,但是我发现了t他下面的步骤将为我重现/解决问题100%。

在尝试了所有上述解决方案后,我试图从零开始创建项目,并艰苦地重新导入每个文件和文件夹。每次我输入一些文件时,我都检查过,语法突出显示仍然有效。即使在他们最后几个它仍然。然后我点击编译失败,因为我忘记了在旧项目中的项目.pch文件中包含一对常见头文件。那是当CodeSense再次爆发时。

经过进一步的调查,我们发现如果您导入的头文件反过来导入了与.pch相同的框架头文件,那么CodeSense将会中断。相同的设置在Xcode 3中不会导致任何问题。

实施例:

project.pch

#import <Foundation/Foundation.h> 
#import "projectConfig.h" 

projectConfig.h

#import <Foundation/Foundation.h> 
#import "one.h" 
#import "two.h" 

所以通过从“projectConfig除去全不必要

#import <Foundation/Foundation.h> 

指令。 h'你可以修改突出显示,并且代码完成也会为你回来。如果你的问题与我的相同。

+0

哇,谢谢!我开始因此而发疯。 – nebs 2011-12-27 18:21:31

+0

是的......只是有同样的问题......愤怒的解决方案修复了它。 – crosscode 2012-01-06 16:55:33

+4

为什么不把这个投入到平流层?我没有打扰清理所有的头部问题,而是关闭了我的目标的预编译前缀头部选项,一切都很好。最后,我可以让整个团队升级到4.2,因为那是我们破产的地方。 – 2012-02-09 01:07:07

5

我发现重新获得语法着色的最好方法就是退出Xcode并重新启动它。我无法告诉你为什么,但每次都有效。

+0

对我来说,甚至可以重新开启项目。 – thgc 2011-10-12 15:50:48

+0

这太疯狂了!它不仅修复了突出显示以前失败的类别也开始工作 – Judioo 2012-06-09 13:30:09

+1

在xcode中不起作用> = 5 – user2159978 2014-04-25 14:06:24

145

1)转到项目 - >构建设置 - >标题搜索路径

2)添加 “$(SRCROOT)/ **”

3)关闭并重新加载项目

4)进入的Xcode - >窗口 - >管理 - >项目 - > $ YourProject - >删除导出的数据

5)稍等片刻,直到重建的XCode所有indicies


为了获得更多的信息,激活详细日志记录:

1)提高终端应用的Xcode日志级别: 默认写com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

2)打开控制台应用程序。搜索“Xcode的”

3)我看到“文件未找到”(在PCH文件中提到的头文件,因此上述修复程序)

+2

您的答案的第二部分非常有帮助! – 2011-10-09 15:02:39

+2

我今年在WWDC实验室的经历是,如果你想让语法突出显示工作,完全关闭预编译...它对我有效,但似乎是不足的修复,虽然 – Stew 2011-10-10 06:38:55

+0

谢谢,@Lars schneider。它很好的一种方式。 – Tirth 2012-01-03 05:14:38

0

我遇到此问题为好,并试图解决方案错误要么“重建索引”,“重新启动XCode”,“将编译器设置更改为LLVM GCC 4.2”。那些没有帮助我。

于是,我就添加以下代码与新创建的头文件一起的时候了。

#include "header.h" 

using namespace cocos2d 

然后,代码在头文件前面添加是彩色的,它可以识别类和东西。

我已经使用了cocos2d-x,所以我的语法是基于C++。尽管如此,我没有用Objective-c来测试它。

3

我发现下面将经常做的伎俩......

“重新选择”既“基地SDK” - 与“建筑” - 在“构建设置”。 (CLick on blue project icon in the top left,while in“Browser mode”,aka ,然后点击项目设置并将其中的东西搞乱。

确保他们都排队/它不会伤害做一些toggly-wogglying了在那里,而你在里面......你知道只是混合起来一点。你会注意到xCode有一个十几微小的中风 - 每次你在64到32位之间切换时...这通常是当我知道代码突出显示在夜晚是否死亡,或者我是否适合去。

通常情况下,我将有一个项目在32位模式下立即被突出显示,并且在64位坐在那里......谁知道..啊,Xcode,你真怪。

+1

答案帮了我很多,并且工作......但是你的写作风格可以改进:) – Qualcuno 2012-04-14 14:25:48

2

我可以确认一个100%fix for this problem, based on a question I had asked(实际上回答),如下图所示。我会补充的一件事是,有时它是“错误的空白”,也可能导致突出显示的丢失。您可以自己清理它,也可以使用Goggle Toolbox for Mac Xcode 4插件,它在XCode Edit菜单中添加一个条目,名为Clean Up Whitespace

enter image description here enter image description here

1

对我来说是我改名为我的项目,并测试目标仍指向旧PCH的位置,但我的应用程序的目标是指向新的。

如果您的应用代理仍然具有代码意义,那么您也可能会遇到这种情况。进入项目,选择“测试”目标搜索“前缀”,并将其设置为“应用”目标中的等效值。

2

这似乎是一个类似的错误,从这个question

我能够在构建设置设置Precompile Prefix HeaderNo来纠正这个问题。

3

选择您的项目 - >构建设置选项卡 - > Apple LLVM Language 5.0 - >预编译前缀标题为YES。 NSLog没有突出显示。目前运行Xcode 5.0.1希望它有帮助=)谢谢@rebelzach

0

对于有人仍然不知道为什么。让开放与的XCode 8.2,它应该工作