Код теряет синтаксический цвет в Xcode 4

Я только что обновился до нового Xcode 4, и код не окрашен, это должно быть.

Например, строка NSString не окрашена в мой пользовательский код, но когда я переключаюсь на код Apple (например, NSString.h), все хорошо окрашено.

Как я могу это исправить?

Ответ 1

Это известная ошибка с последним XCode. Это происходит с некоторыми проектами, перенесенными из XCode 3.X в новую версию. Для некоторых людей это, похоже, помогает организатору, а на вкладке проекта удаляют производные данные для проекта, где смысл кода работает неправильно.

Если у вас небольшой проект, он также может помочь создать новый проект в XCode 4 и импортировать файлы из проекта XCode 3.

Обновление: XCode 4.0.1 немного улучшило ситуацию, по крайней мере, в некоторых моих проектах у меня есть синтаксическая раскраска и смысл кода. Но это еще далеко не исправлено.

Обновление 2: XCode 4.0.2 не сильно изменилось. Похоже, что проблема связана с подпроектами, в частности с статическими библиотеками. Согласно комментариям этого сообщения в блоге некоторые люди были успешными, изменяя пути поиска заголовков относительно абсолютных путей, например. вместо Foo/Bar используйте $(SOURCE_ROOT)/Foo/Bar. Это вместе с переключением всех проектов на формат XCode 3.1 и использование LLVM 2.0 для меня тоже много. Он еще не идеален, но полезен.

Обновление 3: После преобразования субпроектов в независимые проекты и размещения их в рабочей области (например, XCode 4 way) У меня теперь полная подсветка синтаксиса и завершение кода.

Моя текущая среда теперь является рабочим пространством XCode 4, при этом каждый проект является совместимым с 3.1 (в отличие от по умолчанию 3.2), LLVM GCC 4.2 (по умолчанию для системы) и пути поиска заголовка по-прежнему абсолютны (с использованием $(SOURCE_ROOT)/.../).

Ответ 2

Я использовал макрос undefined, но те макросы, которые были определены в макросах препроцессора в настройках сборки. Таким образом, xcode4 не генерировал ошибок для этого макроса undefined.

Шаги, предпринятые для решения.

  • Удалены макросы undefined, где я использовал те макросы undefined.
  • Удалены повторяющиеся определения Маркоса.
  • Удалены дубликаты ресурсов. (Я добавил такие же (многие файлы Thumbs.db) в проект.)
  • Очистка и сборка.

если вы еще не получили цвет, переместите свой проект в другое место, я изменил его на рабочий стол.

После этих шагов я получил цвет в моих глазах.

Но это очень плохой вопрос. Я трачу много драгоценного времени. Я думаю, что эти шаги могут помочь вам.

Спасибо.

Ответ 3

У меня была такая же проблема с моей. Его игра cocos2d с коробкой и бурундуком. Было чертовски беспорядочно, чтобы проект распознавал и находил пути поиска пользователей в первую очередь, поэтому я не собирался их связывать.

Я хотел бы отметить, что у меня есть рекурсивные пути, и у меня есть относительные пути, и у меня все еще есть проблема. Это произошло, когда я добавил новую версию SDK сторонней стороны, которую я использовал. Это был Testflight 083, который я обновил до 1.0. Я удалил свою старую версию, но только удалил ссылки. Затем я вручную удалил его из finder. Импортировал новую папку SDKv1 и прочитал ее в моем проекте и удалил старый путь к папке SDK0, оставив только новый путь к папке SDK1. По какой-то причине я заметил, что, хотя в v083 я использовал #import в моем файле Prefix.pch, он все еще не признавал вызов метода из AppDelegate. Это означает, что #import в Prefix.pch по какой-то причине не работает. Мне пришлось добавить #import в мой файл AppDelegate по отдельности. Это дало мне дубликат #imports, как сказал Джива выше. Это звучит в моей голове.

Таким образом, решение заключалось в том, чтобы эффективно удалить дубликат #import в Prefix.pch, поэтому оставив его только в AppDelegate. Он повторно проиндексирован, и CodeSense работает снова. Спасибо Jeeva!

Ответ 4

Эта проблема сводило меня с ума, и я оставил надежду на ее исправление без какого-либо уродливого взлома конфигурации XCode. Я прошел через эту самую тему форума переполнение стека раз. Тогда однажды мне случайно удалось это исправить. Я не уверен, что вам нужны все эти шаги, но я нашел это верным способом исправления ошибок индексирования XCode:

  • Очистите проект (Command-shift-K)
  • Откройте организатор, закройте свой проект.
  • На вкладке "Проекты" в организаторе удалите производные данные для проекта, который вы хотите использовать reset.
  • Выйти из XCode
  • В терминале запустите:

    sudo mdutil -a -i on
    

    Это похоже на индексацию reset прожектора (я мало знаю об этом, потому что я не использую прожектор).

  • Когда команда завершается, Spotlight придется повторно индексировать. Посмотрите на маленькую точку в увеличительном стекле для значка прожектора. Когда точка уходит, прожектор снова индексируется. Вы можете проверить прогресс, открыв прожектор.
  • Откроем XCode и дождитесь его переиндексации всех ваших файлов.
  • Создайте проект.

В случае успеха сборки вы должны теперь снова выбрать соответствующий синтаксис. Надеюсь, вы, ребята, найдете это небольшое открытие столь же полезным, как и я:)

EDIT:

Я, вероятно, должен добавить, что подсветка синтаксиса иногда кажется переломанной, когда отладчик висит в симуляторе во время запуска приложения. Я просто стараюсь избегать этого, будучи более осторожным в том, чтобы позволить зависанию процесса.

EDIT2: (извините первый вклад)

Работает на XCode 4.6 и 4.6.2.