Xcode продолжает создавать раскадровку после каждого нажатия клавиши

145

Мой проект Xcode, использующий раскадровку, недавно вошел в очень странное состояние: Xcode продолжает создавать весь проект и особенно раскадровку после каждого нажатия клавиши . Я не нашел причин для такого поведения ни в моем проекте, разносящем все интересные файлы (раскадровка и проект), ни в настройках XCode (может быть, я просто не смог его найти?) Излишне говорить, что эта «особенность» делает работу над моим проектом практически невозможной. так как процессор постоянно занят восстановлением раскадровки, когда я набираю новый код. Кто-нибудь видел это?

MrTJ
источник

Ответы:

415

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

Я не нашел окончательного решения, как отключить IB_DESIGNABLEи, таким образом, постоянно компилировать раскадровку и исходные файлы. Я был бы признателен за Xcode флаг, чтобы временно отключить это. Я попытался также окружающие IB_DESIGNABLEс #ifdefмакросами , но они считаются даже если #ifdefсоответствует значению ЛОЖЬ. Комментируя один за другим IB_DESIGNABLEпомощь, но это не выполнимое решение со многими IB_DESIGNABLEs.

Обновить

Я наконец нашел быстрый способ избежать этого раздражающего поведения. Открыв раскадровку в активном окне, отключите «Автоматически обновлять представления» в меню «Редактор». Это прекратит обновление представлений в редакторе раскадровки, которые используют ваш пользовательский код, и, таким образом, значительно ускорит вашу разработку. Когда вам снова понадобится своевременная компиляция, чтобы иметь визуальный предварительный просмотр вашего пользовательского кода, включите эту опцию снова (кажется, что вам также нужно заново открыть раскадровку, чтобы она снова заработала).

введите описание изображения здесь

Возможно, вы захотите добавить привязку ключа к команде, например command-option-control-A, чтобы легко включить / выключить поведение. Чтобы добавить привязку клавиш в XCode, коснитесь команды запятой для предпочтений, выберите вкладку «Привязки клавиш», используйте панель поиска, чтобы найти команду, затем дважды щелкните правой кнопкой мыши, чтобы добавить желаемое нажатие клавиши.

Подход "Оставь это"

Поочередно отключите «Автоматически обновлять представления» и никогда не включайте его .

Сделайте удобное нажатие клавиши для «Обновить все представления» , скажем, command-option-shift-R

введите описание изображения здесь

Во время работы просто время от времени нажимайте command-option-shift-R или по мере необходимости. Как правило, необходимо только прикоснуться к command-option-shift-R во время работы над раскадровкой.

MrTJ
источник
10
Не уверен, как он
включился
1
Xcode 7.3 постоянно строит проект, когда в активном редакторе открыта раскадровка. К счастью, этот ответ решил мою проблему. Apple продолжает впечатлять меня ...
Алексей Таран
24
Проблема версии Xcode 8.2.1 (8C1002) решена. Когда я нашел этот ответ, и он решил мою проблему, я не мог остановить свои слезы. Я провел 2 дня в кошмаре, удаляя производные данные, чистя проект, переустанавливая все модули. (Я думаю, что настало время для Apple, отдать все разработки IDE для Jetbrains. То, что Apple делает, это просто дерьмо! Спасибо!
korgx9
2
Большое спасибо, xcode продолжает строить, и это меня расстраивает.
Чауян
8
Это решение работает на Xcode 9 тоже. Поворот «Автоматически обновлять представления» в раскадровке, и больше нет постоянного перестроения. Спасибо вам большое!
PL
7

У меня была эта проблема, и принятый ответ не работал для меня.

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

Единственный способ исправить это - закрыть эту вкладку или выбрать другой файл (например, обычный файл кода), а затем закрыть и снова открыть XCode. После этого он больше не перестраивался при каждом нажатии клавиши.

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

Не могу дождаться, пока Apple исправит это, потому что это очень расстраивает!

(ノ ಠ 益 ಠ) ノ 彡 ┻━┻

Ник Кирстен
источник