【问题标题】:Xcode: code loses syntax coloringXcode:代码失去语法着色
【发布时间】:2011-01-09 10:20:48
【问题描述】:

我发现在各种情况下,Xcode 3.1 (Leopard) 中的 Objective-C 代码在键入后可能无法获得适当的语法着色,或者失去它所具有的着色。

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

有时 CMD-a 选择代码页上的所有文本会使着色(重新)出现,有时双击一行以选择它会起作用,有时我必须在符号中添加/删除空格以让该符号(重新)着色。重建或关闭/重新打开项目可能有效,也可能无效。

这是 Xcode 的一个已知问题吗?对于让我很恼火的事情,我没有在 SO 和我期望的其他地方找到关于它的大量讨论。

有没有强制全局语法重新着色的命令?

【问题讨论】:

标签: xcode syntax-highlighting


【解决方案1】:

打开项目设置(项目 > 编辑项目设置菜单),然后单击常规选项卡中的重建代码感知索引按钮。这将重新创建 Xcode 用于语法着色的索引。

对于较大的项目,此过程可能需要一段时间,因此您可以在 Activity 窗口(Window > Activity 菜单)中查看进度。

【讨论】:

  • 一次又一次这并不能解决我的问题。我一定是做错了什么,因为 XCode 根本不打扰突出语法或显示自动完成。
  • 请确保您针对 Apple 记录有关此类问题的错误:bugreport.apple.com。
【解决方案2】:

我最近遇到了类似的问题,所有的着色和自动完成功能都停止了对内置框架的工作,我自己的类仍然有效。有人建议我在构建设置中关闭“运行静态分析器”。这很奇怪,但它奏效了。

【讨论】:

    【解决方案3】:

    此外,在 XCode4 中没有重建码感索引的按钮。

    【讨论】:

    • 我在某处读到这可能是因为 XCode4 不再需要代码感知索引。我认为它直接使用新的 Clang 语法分析,而不是保留单独的索引。这也是为什么代码建议更加准确的原因,因为它只建议从编译器的角度来看有意义的代码完成。
    【解决方案4】:

    只需选择丢失语法着色的文件,按编辑器>语法着色>(选择您的语言(例如Objective c++)而不是“默认”

    【讨论】:

    • 这发生在我身上。不知道为什么 XCode 会默认为 Generic 而不是一个文件的正确文件类型,但是这一步解决了它。我首先尝试清理和删除派生数据,我认为这是罪魁祸首。
    • 干杯...苹果正在为我选择 AppleScript,哈哈,谢谢队友
    【解决方案5】:

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

    似乎有多种因素。

    【讨论】:

      【解决方案6】:

      我在一个项目中遇到了同样的问题,该项目在 Xcode 3 中运行良好,但在 Xcode 4 中语法突出显示和代码完成已被破坏。我花了大半天的时间才弄明白,但我发现以下步骤将为我 100% 重现/解决问题。

      在尝试了上述所有解决方案均无济于事后,我尝试从头开始创建项目并煞费苦心地重新导入每个文件和文件夹。每次我导入几个文件时,我都会检查并且语法突出显示仍然有效。即使在他们中的最后几个之后,它仍然如此。然后我点击构建失败,因为我忘记在旧项目中的项目 .pch 文件中包含几个常见的头文件。那是 CodeSense 再次崩溃的时候。

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

      例子:

      项目.pch

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

      projectConfig.h

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

      所以通过删除完全不必要的

      #import <Foundation/Foundation.h>
      

      来自“projectConfig.h”的指令,您可以修复突出显示,并且代码完成也会为您返回。如果你的问题和我的一样。

      【讨论】:

      • 是的……刚刚遇到了同样的问题……而 rage 的解决方案解决了它。
      • 为什么这没有被投票到平流层?我没有费心清理我所有的头文件问题,而是为我的目标关闭了 Precompile Prefix Header 选项,一切都很好。最后我可以让整个团队升级到 4.2,因为那是我们崩溃的地方。
      • 有效!我和@Rob Booth 做了同样的事情,我关闭了“预编译前缀头”(将其设置为 NO),清理了我的项目并删除了它的派生数据。我的语法高亮重新开始工作!
      • 这解决了我的问题。我的不是 Foundation 文件,而是自定义类。我只是从 .pch 文件中删除它,然后读取它并在我的其他类文件中删除它的所有实例。
      • 谢谢你。 :) 我完全按照你的描述。从我在 .PCH 中导入的所有文件中删除了 Foundation 和 UIKit。
      【解决方案7】:

      我发现恢复语法着色的最佳方法就是退出 Xcode 并重新启动它。我无法告诉你原因,但每次都有效。

      【讨论】:

      • 对我来说,重新打开项目就足够了。
      • 这太疯狂了!它不仅修复了突出显示以前失败的类别,还开始工作
      【解决方案8】:

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

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

      3.) 关闭并重新加载项目

      4.) 转到 Xcode --> Window --> Organizer --> Projects --> $YourProject --> Delete Derived Data

      5.) 稍等片刻,直到 XCode 重建所有索引


      要获取更多信息,请激活详细日志记录:

      1.) 在终端应用程序中增加 Xcode 日志级别: 默认写入 com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

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

      3.) 我看到 pch 文件中提到的头文件出现“找不到文件”错误(因此进行了上述修复)

      【讨论】:

      • 你回答的第二部分很有帮助!!
      • 我今年在 WWDC 实验室的经验是,如果你想要语法高亮工作,请完全关闭预编译......它对我有用,但似乎修复不足
      • 谢谢,@Lars schneider。这是一种不错的方式。
      • 非常感谢! #4(删除派生数据)也对我有用。
      • 这在 Xcode 8.3 中对我有用,而以前在 8.2 下工作的另一个解决方案停止恢复语法突出显示。伟大的,永恒的答案!
      【解决方案9】:

      我也遇到过这个问题,并尝试了“重建索引”、“重新启动 XCode”、“将编译器设置更改为 LLVM GCC 4.2”的解决方案。这些对我没有帮助。

      所以我尝试在新创建的头文件的同时立即添加以下代码。

      #include "header.h"
      
      using namespace cocos2d
      

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

      我用过cocos2d-x,所以我的语法是基于c++的。不过,我还没有使用 Objective-c 对其进行测试。

      【讨论】:

        【解决方案10】:

        我发现以下方法经常可以解决问题……

        在“构建设置”中“重新选择”“基础 SDK”和“架构”。 (点击左上角的蓝色项目图标,在“浏览器模式”下,又名 1,然后点击项目设置并在那里搞砸。

        确保他们都排成一列 / 在那里做一点 toggly-wogglying 不会有什么坏处,当你在那里时……你知道,只是把它弄混了一点。您会注意到 xCode 有一个很小的小笔划 - 每次您在 64 位和 32 位之间切换时……这通常是当我知道代码突出显示是否在夜间死亡,或者我是否准备好时。

        通常,我会有一个项目在 32 位模式下立即突出显示,然后在 64 位模式下就坐在那里……谁知道呢..啊,Xcode,你这个古怪的笨蛋。

        【讨论】:

        • 答案对我帮助很大,也很有效......但是你的写作风格可以改进:)
        • 回想起来,是的,这个答案对于任何非英语为母语的人来说确实是难以理解的。唉,对我来说……这是 hillairballs
        【解决方案11】:

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

        【讨论】:

          【解决方案12】:

          对我来说,我重命名了我的项目,而 Tests 目标仍然指向旧的 pch 位置,但我的 App 目标指向新的位置。

          如果您的应用委托仍然具有代码感知能力,那么您也可能属于这种情况。进入项目,选择“测试”目标搜索“前缀”并将其设置为“应用”目标中的等效值。

          【讨论】:

            【解决方案13】:

            这似乎是来自此question 的类似错误

            我可以通过在构建设置中将 Precompile Prefix Header 设置为 No 来纠正此问题。

            【讨论】:

              【解决方案14】:

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

              【讨论】:

                【解决方案15】:

                对于某些人仍然不知道为什么。让我们用 XCode 8.2 打开,它应该可以工作

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-07-18
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-10-21
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多