代码在Xcode 4中丢失语法颜色

时间:2011-03-13 10:09:27

标签: objective-c xcode xcode4

我刚刚升级到新的 Xcode 4 ,代码没有应该是彩色的。

例如,字符串NSString在我的自定义代码中没有着色,但是当我切换到Apple的代码(例如NSString.h)时,一切都很好。

我该如何解决?

4 个答案:

答案 0 :(得分:24)

这是最新XCode的已知错误。对于从XCode 3.X迁移到新版本的一些项目,会发生这种情况。对于某些人来说,它似乎有助于转到组织者,并在项目选项卡中删除代码检测无法正常工作的项目的派生数据。

如果你有一个小项目,它也可能有助于在XCode 4中创建一个新项目并从XCode 3项目中导入文件。

更新: XCode 4.0.1使情况好一点,至少在我的一些项目中,我有语法着色和代码感。但它还远未修复。

更新2: XCode 4.0.2没有太大变化。似乎问题与子项目有关,特别是静态库。根据{{​​3}}的评论,一些人通过将标题搜索路径从相对路径改为绝对路径来成功,例如而不是Foo/Bar使用$(SOURCE_ROOT)/Foo/Bar。这与将所有项目切换到XCode 3.1格式以及使用LLVM 2.0一起修复了很多。它还不完美,但可以使用。

更新3:在将子项目转换为独立项目并将它们放入this blog post(又名 XCode 4方式)之后,我现在已经有了完整的语法突出显示和代码完成。

我当前的环境现在是一个XCode 4工作区,每个项目都是3.1兼容的(而不是默认的3.2),LLVM GCC 4.2(系统默认)和标题搜索路径仍然是绝对的(使用{{1} })。

答案 1 :(得分:3)

我使用了未定义的宏,但是在构建设置中的预处理器宏中定义了那些宏。所以xcode4没有为那个未定义的宏生成任何错误。

采取措施解决。

  1. 在我使用这些未定义的宏的任何地方删除了未定义的宏。
  2. 删除了Marcos的重复定义。
  3. 删除了重复的资源。 (我在项目中添加了相同的(许多Thumbs.db文件)文件。)
  4. 清洁&建立。
  5. 如果你还没有得到这种颜色,请将你的项目重新安置到不同的位置,我改为我的桌面位置。

    经过这些步骤,我的颜色在我眼中。

    但这是非常糟糕的问题。我吸引了很多宝贵的时间。我认为这些步骤可能会对您有所帮助。

    感谢。

答案 2 :(得分:1)

我和我有同样的问题。它是一个带盒子和花栗鼠的cocos2d游戏。让项目首先识别并找到用户搜索路径真是一团糟,所以我不打算搞砸那些。

我想指出的是,我确实有递归路径,而且我确实有相对路径,但我仍然遇到了问题。它发生在我添加了我正在使用的第三方SDK的新版本时。这是Testflight 083,我将其更新为1.0。我删除了旧版本,但只删除了引用。然后我从finder手动删除它。导入新的SDKv1文件夹并将其读入我的项目并删除旧的SDK0文件夹路径,只留下新添加的SDK1文件夹路径。出于某种原因,我注意到即使在v083中我在我的Prefix.pch文件中使用了#import,它仍然无法识别从AppDelegate调用方法。这意味着Prefix.pch中的#import由于某种原因无效。我必须单独将#import添加到我的AppDelegate文件中。这给了我重复的#imports,正如Jeeva上面所说的那样。这在我脑海中敲响了警钟。

因此,解决方案是去有效地删除Prefix.pch中的重复#import,因此只留下AppDelegate中的副本。它重新编制索引,CodeSense再次运行。谢谢Jeeva!

答案 3 :(得分:1)

这个问题让我感到疯狂,而且我已经放弃了修复它的希望,而不会对XCode的配置造成一些丑陋的黑客攻击。我通过这个论坛帖子经过了一堆堆溢出的时间。然后有一天,我偶然发现了它。我不确定你是否需要所有这些步骤,但我发现这是修复XCode索引问题的必然方法:

  • 清理项目(Command-shift-K)
  • 打开组织者,关闭项目。
  • 在管理器的“项目”标签下,删除要重置的项目的派生数据。
  • 退出XCode
  • 在终端中,运行:

    sudo mdutil -a -i on
    

    这似乎重置了聚光灯索引(我不太了解它因为我不使用聚光灯)。

  • 命令完成后,Spotlight必须重新编制索引。抬头看放大镜中的小点,以获得聚光灯的图标。当点离开时,聚光灯已重新编入索引。您可以通过打开聚光灯来检查进度。
  • 重新打开XCode,等待它重新索引所有文件。
  • 构建项目。

在构建成功时,您现在应该再次使用适当的语法突出显示。我希望你们发现这个小小的发现和我一样有用:)

编辑:

我应该补充一点,当调试器在应用程序启动期间挂起模拟器时,语法突出显示有时似乎会重新中断。我只是想通过更加小心地让流程挂起来避免这种情况。

EDIT2 :(抱歉第一次贡献)

适用于XCode 4.6和4.6.2。