Ответ 1
Это вызвано определениями IB_DESIGNABLE
в исходных файлах заголовков. Вероятно, проблема возникает только в том случае, если заголовочный файл, содержащий IB_DESIGNABLE
, включен (даже неявно) в исходный файл, который вы сейчас редактируете.
Я не нашел окончательного решения о том, как отключить IB_DESIGNABLE
и, таким образом, постоянно скомпилировать раскадровку и исходные файлы. Я был бы признателен за флаг Xcode, чтобы временно отключить его. Я также попытался окружить макрос IB_DESIGNABLE
макросами #ifdef
, но они рассматриваются, даже если значение #ifdef
равно false. Комментируя один за другим, IB_DESIGNABLE
помогает, но это не выполнимое решение со многими IB_DESIGNABLE
s.
Обновление
Наконец-то я нашел быстрый способ избежать этого раздражающего поведения. Открыв раскадровку в активном окне, отключите "Автоматическое обновление представлений" в меню "Редактор". Это перестанет обновлять представления в редакторе раскадровки, которые используют ваш собственный код и тем самым значительно ускорят вашу разработку. Когда вам понадобится снова компиляция "точно в срок", чтобы иметь визуальный предварительный просмотр вашего пользовательского кода, включите эту опцию снова (похоже, вам также нужно снова открыть раскадровку, чтобы она снова работала).
Возможно, вы захотите добавить привязку клавиш к команде, например command-option-control-A, чтобы легко переключать поведение вкл/выкл. Чтобы добавить привязку клавиш в Xcode, нажмите командную запятую для настроек, выберите вкладку "Связывание клавиш", используйте панель поиска, чтобы найти команду, затем дважды щелкните по правой области, чтобы добавить желаемое нажатие клавиши.
"Оставьте это" подход
Поверните "Автоматически обновлять представления" и не включите его.
Сделайте удобное нажатие клавиши "Обновить все представления" , скажем, command-option-shift-R
Во время работы просто время от времени прикасайтесь к команде-option-shift-R или по мере необходимости. Обычно вам нужно только прикоснуться к команде-option-shift-R, когда вы работаете на раскадровке.