xcode code sense цвет / завершение не работает - PullRequest
68 голосов
/ 26 октября 2009

РЕДАКТИРОВАТЬ: Это странно ... если я дважды щелкаю элемент Недавние проекты для проекта на экране приветствия, смысл кода и окраска работает просто отлично, но если я просто нажимаю Open ( внизу справа на экране приветствия) это не так. Открытие из File > Recent projects также не работает и двойной щелчок по файлу .xcodeproj в Finder.


Кодовое значение для проекта iPhone OS 3.0, над которым я работал в течение нескольких месяцев (через различные установки / версии XCode), больше не работает. Например, если я сделаю NSString *myString, весь код будет черным (без раскраски, без Option + Double Click, без завершения кода). Code Sense «работает» только для моих собственных классов / методов / свойств, но не для каких-либо классов SDK. Если я создаю новый проект с нуля, у меня все это работает.

Я уже пытался изменить «Базовый SDK для всех конфигураций» в этом проекте. Я уже попробовал «Пересмотреть Code Sense Index». Я уже пробовал "Очистить все цели".

Документация в настройках загружена и работает. Например, если я выберу NSString выше и сделаю Правый клик -> Найти текст в документации, я получу окно со всей ссылкой на класс.

Любые идеи будут высоко оценены.

Ответы [ 23 ]

204 голосов
/ 11 мая 2011

В Xcode 4 мне так и не удалось найти кнопку «Восстановить смысл кода», но если вы перейдете в Window -> Organizer, выберите вкладку Project и нажмите «Delete ...» рядом с Производная папка данных, похоже, имеет тот же эффект. (Я получил этот совет от http://blog.slidetorock.com/xcode-4-code-sense-autocompletion-problems,, который указывает, что он получил его по очереди от https://stackoverflow.com/questions/2138047/xcode-code-loses-syntax-coloring - но я не вижу его ни в одном из ответов. Очень любопытно.)

36 голосов
/ 06 октября 2011

Синтаксическая раскраска работает после того, как я сделаю следующие шаги:

  • Перейдите в Органайзер> Проект> Удалить производные данные из вашего текущего проект
  • Очистить и построить
  • Закройте и выйдите из XCode и снова откройте проект
  • Синтаксическая раскраска становится хорошо после переиндексации проекта

приписка

  • LLVM Complier 3.0
  • я использовал флаги Complier -fno-objc-arc для всех сторонних библиотек (например, ASIHTTPRequest)
  • Мой проект создан из XCode 4.2
35 голосов
/ 24 апреля 2012

Просто запускайте в терминале каждый раз, когда необходимо

rm -fR ~/Library/Developer/Xcode/DerivedData

Работает нормально. Подсветка и CodeSense обратно ко мне! Когда-нибудь нужно было сделать Clean Clean, чтобы оно заработало.

примечание: как я вижу, это удаляет снимок и другие 'особенности' Xcode4. Но мы им не пользуемся:)

12 голосов
/ 23 февраля 2011

У меня была такая же проблема в Xcode 4 и я решил ее, изменив компилятор с GCC 4.2 на LLVM GCC 4.2.

10 голосов
/ 08 декабря 2009

Получение информации о проекте в XCode и изменение формата проекта в соответствии с версией XCode, которую вы используете (на момент написания статьи «XCode 3.2-совместимый»).

Вы также можете удалить производные данные, но если вы не обновили формат своего проекта, ошибка повторится почти сразу. (Это может произойти даже после обновления формата вашего проекта, но раньше мне приходилось удалять DerivedData несколько раз в день, и я думаю, что я делал это только один раз после исправления проекта.)

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

10 голосов
/ 24 мая 2012

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

Попробуйте импортировать свой собственный файл в верхней части списка импорта над UIKit.h и Fonudation.h, а НЕ в конце, как все.

В моем файле prefix.pch:

#ifdef __OBJC__
    #import "myFile.h"
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
#endif
4 голосов
/ 30 августа 2013

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

defaults write com.apple.dt.XCode IDEIndexDisable 0

если вы хотите отключить индексацию, введите это в терминал:

defaults write com.apple.dt.XCode IDEIndexDisable 1
4 голосов
/ 02 октября 2011

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

  • удалить ссылки на проблемные файлы в навигаторе проекта
  • переместить проблемные файлы из папки проекта в Finder
  • Вернитесь в навигатор проекта, щелкните правой кнопкой мыши и выберите Добавить файлы в ...
  • найдите файлы, которые я только что переместил, и добавьте их обратно в проект, убедившись, что выбран «Копировать объекты в папку целевой группы (если необходимо)».

Кодовый смысл восстановлен.

Чтобы быть более конкретным, моя конкретная проблема заключается в том, что когда я создаю новый класс с помощью щелчка правой кнопкой мыши в навигаторе проекта, примерно 30-40% смысла кода времени не работает в заголовочном файле нового класса. Интересно, что это работает в реализации.

Вещи, которые я пробовал, но не удалось:

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

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

3 голосов
/ 27 апреля 2011

Были такие же проблемы в Xcode 4.0.2. Смысл кода работал во всех, кроме двух файлах: одном .m-файле и соответствующем .h-файле. Перепробовал все - кроме пересоздания индекса смысла кода, потому что я нигде не мог найти кнопку - ничего не получалось. В конце я удалил связанные файлы, .m, .h и .xib. Созданы новые файлы, теперь все работает как положено.

2 голосов
/ 05 сентября 2012

Если вы заметили, что это происходит только с некоторыми вашими файлами, убедитесь, что файл .m является членом вашей цели.

...