Код теряет цвет синтаксиса в Xcode 4 - PullRequest
11 голосов
/ 13 марта 2011

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

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

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

Ответы [ 4 ]

24 голосов
/ 13 марта 2011

Это известная ошибка с последней версией 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 ) у меня теперь полный синтаксис подсветка и завершение кода обратно.

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

3 голосов
/ 22 марта 2011

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

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

  1. Удалены неопределенные макросы везде, где я использовал эти неопределенные макросы.
  2. Удалены дубликаты определений Маркоса.
  3. Удалены дубликаты ресурсов. (Я добавил те же (много файлов Thumbs.db) в проект.)
  4. Очистить и построить.

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

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

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

Спасибо.

1 голос
/ 19 апреля 2013

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

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

    sudo mdutil -a -i on
    

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

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

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

EDIT:

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

РЕДАКТИРОВАТЬ2: (извините за первый вклад)

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

1 голос
/ 04 июля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...