Xcode: код теряет окраску синтаксиса - PullRequest
80 голосов
/ 26 января 2010

Я считаю, что в различных ситуациях код Objective C в Xcode 3.1 (Leopard) может не получить соответствующую раскраску синтаксиса после набора или потерять раскраску, которая у него была.

Это не просто проблема обновления с новыми пользовательскими символами, но также влияет на символы инфраструктуры Какао.

Иногда CMD-a для выделения всего текста на кодовой странице приводит к появлению окраски (пере), иногда двойной щелчок по строке, чтобы выбрать ее, иногда приходится добавлять / удалять пробел в символе получить этот символ (ре) цвет. Восстановление или закрытие / повторное открытие проекта может или не может работать.

Это известная проблема с Xcode? Что-то настолько раздражающее для меня, я не нахожу обильного обсуждения этого на SO и в других местах, которые я ожидаю.

И есть ли какая-либо команда для принудительного изменения глобального синтаксиса?

Ответы [ 15 ]

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

1.) Зайдите в Проект -> Настройки сборки -> Пути поиска по заголовку

2.) Добавить "$ (SRCROOT) / **"

3.) Закройте и перезагрузите проект

4.) Перейдите в Xcode -> Окно -> Органайзер -> Проекты -> $ YourProject -> Удалить производные данные

5.) Подождите, пока XCode не перестроит все индикаторы


Для получения дополнительной информации активируйте подробное ведение журнала:

1.) Увеличьте уровень журнала Xcode в приложении Terminal: по умолчанию пишите com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

2.) Откройте консольное приложение. Искать: "xcode"

3.) Я видел ошибки "file not found" для заголовочных файлов, упомянутых в файле pch (поэтому исправление выше)

43 голосов
/ 17 мая 2011

У меня была та же проблема с проектом, который был в порядке в Xcode 3, и для которого подсветка синтаксиса и завершение кода были нарушены в Xcode 4. Мне потребовалась лучшая половина дня, чтобы понять это, но я обнаружил, что следующие шаги воспроизведут / исправят проблему на 100% для меня.

Попробовав все вышеупомянутые решения безрезультатно, я попытался создать проект с нуля и тщательно импортировать все файлы и папки. Каждый раз, когда я импортировал пару файлов, я проверял, и подсветка синтаксиса все еще работала. Даже после нескольких последних из них это все-таки произошло. Затем я нажал build, что не удалось, потому что я забыл включить пару общих заголовочных файлов в файл .pch проекта, которые были в старом проекте. И это было, когда CodeSense снова сломался.

После дальнейшего изучения мы обнаружили, что если вы импортируете файл заголовка, который, в свою очередь, импортирует тот же файл заголовка фреймворка, что и .pch, уже делает, то CodeSense сломается. Та же самая установка не вызывала никаких проблем в Xcode 3.

Пример:

project.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, вы можете исправить подсветку, и завершение кода также вернется к вам. Если ваша проблема такая же, как у меня, то это

15 голосов
/ 16 апреля 2011

Просто выберите файл, который потерял синтаксическую раскраску, нажмите «Редактор»> «Подсветка синтаксиса»> (выберите ваш язык (Objective c ++ for ex) вместо «По умолчанию»

6 голосов
/ 07 августа 2011

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

4 голосов
/ 04 апреля 2012

Я считаю, что следующее будет часто добиваться цели ...

«Повторно выберите» «Базовый SDK» и «Архитектура» в «Настройках сборки». (Нажмите на синий значок проекта в левом верхнем углу, находясь в «Режиме браузера», также известный как 1 , затем нажмите «Настройки проекта» и связывайтесь с материалами.

Удостоверьтесь, что все они выстроились в очередь / не мешало бы немного поработать там, пока вы там ... вы знаете, просто немного перемешайте. Вы заметите, что xCode имеет крошечный мини-штрих - каждый раз, когда вы переключаетесь между 64- и 32-битным ... Обычно я знаю, мертв ли ​​подсветка кода на ночь или я готов к работе.

Часто у меня будет проект, который сразу подсвечивается в 32-битном режиме и просто сидит там в 64 ... Кто знает ... Ааа, Xcode, ты дурацкий дурак.

3 голосов
/ 13 марта 2014

Выберите ваш проект -> вкладка «Настройки сборки» -> Apple LLVM Language 5.0 -> прекомпилировать заголовок префикса в YES NSLog не был выделен. В настоящее время работает Xcode 5.0.1 Надеюсь, это поможет =) Спасибо @ rebelzach

2 голосов
/ 24 января 2013

Это похоже на ошибку из этого вопроса

Мне удалось исправить эту проблему, установив Precompile Prefix Header в No в настройках сборки.

2 голосов
/ 14 апреля 2012

Я могу подтвердить исправление 100% для этой проблемы, основываясь на вопросе, который я задал (и фактически ответил), как показано ниже. Одна вещь, которую я добавлю, состоит в том, что иногда это «ошибочные пробелы», которые также могут способствовать потере выделения. Либо почистите его самостоятельно, либо используйте плагин Goggle Toolbox для Mac Xcode 4, который добавляет запись в меню XCode Edit под названием Clean Up Whitespace.

enter image description here enter image description here

1 голос
/ 11 января 2013

Для меня это было то, что я переименовал свой проект, и цель Tests все еще указывала на старое местоположение pch, но моя цель приложения указывала на новый.

Если ваш делегат приложения все еще имеет смысл кода, это может иметь место и для вас. Зайдите в проект, выберите «префикс» поиска цели «Тесты» и установите для него эквивалентное значение в цели «приложение».

1 голос
/ 05 мая 2010

У меня недавно была похожая проблема, все раскраски и автозаполнение перестали работать для встроенных фреймворков, мои собственные классы все еще работали. Кто-то порекомендовал мне отключить «Запустить Static Analyzer» в настройках сборки. Это странно, но это сработало.

...