2016-11-20 3 views
6

С момента последнего обновления XCode 8.1 (Build 8B62) У меня возникают странные проблемы с подсветкой синтаксиса/завершением кода в связи с макросами препроцессора.Xcode 8 и макросы препроцессора

Они отлично работали с семенами XCode 8 GM, которые я использовал до обновления, но теперь XCode не распознает правильную цель при выборе схемы. Например, у меня есть статичная библиотека контроллера с двумя целями - одна для iOS, другая для Apple Watch. В каждом я использую макрос (APP/WATCH) для конкретных операций платформы. Но когда я нахожусь в целевом APP, редактор Xcode выделяет код так, как если бы он был целью WATCH, тогда как фактический код для этой цели не имеет подсветки или автоматического завершения. Кажется, что Xcode случайно обнаруживает макросы из разных целей. Компилятор, с другой стороны, всегда обнаруживает правильный код и работает на 100% отлично, поэтому нет ничего плохого в коде. Это просто редактор.

Также, когда я запускаю Xcode, код подсвечивается примерно секунду, а затем снова получает весь белый текст. Удаление и чтение всех схем не работало, очистка и удаление Derived Data также не влияет на это. Любой, кто имеет такую ​​же проблему или даже решение для этого?

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

+0

У меня такая же проблема. Любая удача найти решение для этого? –

+0

У меня тоже такая проблема! Вы что-нибудь нашли? – guidev

+0

К сожалению, ничего, я скоро напишу отчет об ошибке. Угадайте, что Apple не распознает эту ошибку самостоятельно, потому что никто, кажется, больше не использует objc. – optz

ответ

0

Это была настоящая ошибка в XCode 8. С XCode 9 (на сегодняшний день, сентябрь 2017 г. бета-версия 6) она окончательно решена.

0

Попробуйте «Clean построить» первый ... если это не сработает, то попробуйте

В Препроцессор макрокоманд Не используется в предварительно скомпилированных заголовков есть два подзаголовки

Препроцессор Макросы Не используется в предварительно скомпилированных заголовков
отладки +
релиз +

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

Препроцессор Макросы Не используется в предварительно скомпилированных заголовков
отладки +
Любая архитектура | Любой SDK
релиз +
Любая архитектура | Любой SDK

Вам не нужно вводить ничего здесь после того, как вы нажали +. Как только вы добавили эти две дополнительные записи, попробуйте еще одну чистую сборку.

Смежные вопросы