Подтвердить что ты не робот

Xcode 8 зависает/не реагирует при открытии раскадровки

Недавно я обновился до Xcode 8 и обновил свой проект до Swift 3. Все работало нормально на некоторое время. Загрузка раскадровки всегда была медленной (даже когда все еще выполнялась Xcode 7) и была примерно такой же "медленной" с Xcode 8. Я всегда думал, что это потому, что я нахожусь в более раннем (в конце 2011 года) Macbook Pro.

Но в последнее время иногда Xcode просто зависает, когда я пытаюсь открыть раскадровку. А со вчерашнего дня ВСЕГДА "висит". Xcode становится неактуальным, и мне нужно принудительно выйти из него.

В мониторе активности я вижу Xcode, используя 102% использования ЦП и памяти, продолжает расти (более 10 ГБ, если я позволяю).

Теперь я действительно застреваю, потому что, когда я открываю Xcode, он немедленно открывает мой проект и хочет открыть раскадровку. Я даже не могу перейти к быстрому файлу. Я не получаю окно, где я больше выбираю свой проект. Таким образом, я не могу больше открыть свой проект, если Xcode не перестает отвечать на запросы. Даже когда я дважды щелкаю другим проектом, чтобы открыть Xcode, он все равно пытается открыть мой проект (на раскадровке).

Я пробовал несколько вещей (на основе потоков SO, которые я мог найти по аналогичным проблемам со старыми версиями Xcode):

  • Удалено Xcode и удалено содержимое библиотеки ~/Library/Developer. Затем переустановите Xcode.
  • Удалено содержимое var/folders
  • Удалено содержимое папки с производными данными
  • Перезагрузка Macbook

Моя следующая попытка - загрузить бета-версию Xcode 8.1. Но на самом деле это не так.

Любые другие предложения в отношении того, что я мог попробовать?

МАЛЫЙ ОБНОВЛЕНИЕ: Удалось удалить "состояние" Xcode, где он по умолчанию запускает мой проект, а также открывает его на раскадровке. Сделал это:

  • Удаление папки ~/Library/Saved Application State/com.apple.dt.Xcode.savedState(при запуске снова отобразится последнее окно проекта)
  • Чтобы не допустить, чтобы проект загружал определенный файл при открытии, я перешел к содержимому .xcworkspace(в моей папке проекта), а затем удалил /xcuserdata/myusername.xcuserdatad/UserInterfaceState.xcuserstate. Теперь проект открывается без выбора файла.

Тем не менее... основная проблема остается. Когда я нажимаю на свою раскадровку, Xcode становится невосприимчивой.

4b9b3361

Ответ 1

По моему опыту, для старого проекта, открывшегося с XCode8, он срочно хочет задать вам вопрос о стандартном устройстве для просмотра раскадровки. Этот вопрос настолько критичен, что пока вы не ответите на него, вы смотрите на невидимое диалоговое окно, пока XCode не перестанет отвечать.

Несколько решений работали для меня:

  • Если вы запускаете XCode с 1.5-секундным окном, немедленно переключитесь на файл без раскадровки. Если вы работаете с редактором разделенных панелей с раскадрой в вспомогательной панели, отключите его.
  • Создайте еще одну раскадровку, откройте ее, XCode задаст вам вопрос о устройстве по умолчанию.
  • Ответьте на вопрос, сохраните состояние проекта и надейтесь открыть раскадровку

Удаление этих возможностей позволило мне снова открыть раскадровку    

    <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
    <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
    <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>

Ответ 2

Я столкнулся с одной проблемой с одним наконечником в Xcode 8.1.

Наличие "Top Bar" и/или "Bottom Bar" для чего-либо, кроме "Inferred", заставило Xcode замедлить сканирование. Изменение этого параметра на "Inferred" приводит к тому, что производительность возвращается к норме, а недостатком является то, что она удаляет полосы в предварительном просмотре.

Incorrect settings

Correct settings

Ответ 3

У меня была аналогичная проблема: Интерфейс Builder был медленным, чтобы быть почти полностью невосприимчивым.

Я обнаружил, что очистка моего каталога xcuserdata восстановила IB до нормальной скорости.

Предположительно, какое-то плохое состояние вкралось, что вызвало замедление.

rm -rf Project.xcodeproj/xcuserdata/
rm -rf Project.xcworkspace/xcuserdata/

Ответ 4

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

  • Переустановите Xcode 8.2.1 и перезагрузите

  • Удалить файлы конфигурации, состояния и данных

    rm -rf ~/Library/Developer/*
    rm -rf ~/Library/Caches/com.apple.dt.Xcode/*
    rm -rf ~/Library/Developer/Xcode/DerivedData/*
    rm -rf ApplicationName.xcodeproj/xcuserdata/
    rm -rf ApplicationName.xcworkspace/xcuserdata/
    rm -rf ~/Library/Saved\ Application\ State/com.apple.dt.Xcode.savedState/
    
  • Исправить проблемы автоаудита

  • Удалите все зависимости из XML раскадровки, кроме:

    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    
  • Проверьте все раскадровки и xib файлы, гарантируя, что для всех "Top Bar" и "Bottom Bar" установлено значение "Inferred"

Последние два пункта, казалось, были самыми важными.

Ответ 5

Как я решаю проблему с раскадрой:

  • Резервное копирование проблемного файла раскадровки.
  • Удалить его в проекте.
  • Создайте новую раскадровку с тем же именем и местоположением, что и удаленный.
  • Отредактируйте 2 раскадровки с помощью текстового редактора.
  • Скопируйте данные xml после тега </dependencies> из старого в новый.

Ответ 6

Работа с бета-версией Xcode 8.1. Угадайте, что это ошибка в Xcode 8.

Ответ 7

Я только что обновился до Xcode 8.3 и возникла проблема с раскадрой. Я пробовал все, что упоминалось выше, ни одна из них не работает.

Наконец, я заметил там какое-то предупреждение авто-макета, в котором указано, что один из навигационных панелей навигации навигации неверен. Он настаивает на том, что его ширина должна быть 320, в то время как выбранное устройство - iPhone 7. Я переключился на Xcode 8.2.1 (8.3 просто слишком медленно, чтобы что-то изменить!), А затем изменил устройство просмотра на iPhone SE... все исправлено!

Ответ 8

Удалите полученные данные из /Users/ {имя пользователя}/Library/Developer/Xcode/DerivedData​​p >

(Вы можете получить точный путь) Файл → Настройка проекта: или Файл → Параметры рабочей области

Ответ 9

У меня была эта проблема вскоре после обновления до Xcode 9, всякий раз, когда я менял что-либо в раскадровке (даже перемещая представление на 1 пиксель), он зависал бы с вращающимся пляжем смерти в течение как минимум 10 секунд.

Я не хотел очищать всю папку xcuserdata и потерять все мои точки останова и т.д., но просто удалил UserInterfaceState.xcuserstate и перезапустил Xcode для меня.

Ответ 10

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

В итоге я открыл файл Main.storyboard в текстовом редакторе и удалил сцену, вызвавшую проблему. Он начнется с

    <!—YourViewControllerName—>
    <scene sceneID="XXX-XXX-XXX">

и закончите с </scene>. Просто выделите весь фрагмент, удалите, сохраните и повторите попытку.

Гораздо лучше, чем начать с нуля!

Ответ 11

У меня возникла такая же проблема, используя Xcode 9.2, исправив ее, удалив представление стека, которое обернуло другие представления, я просто удалил стек и его теги subview и сохранил другие представления в сцене.

Ответ 12

Вот что я сделал, вырезал тревожный элемент управления представлением, вставил его в новую сценарную сцену temp-проекта, а затем вставил обратно viewcontroller. Работаю хорошо для меня.

С течением времени, когда раскадровка растет, xcode создает беспорядок ведения истории отслеживания элементов viewcontroller и, следовательно, замораживания.

Ответ 13

Пока Apple не зафиксирует IB, в первой строке XML (тег <document>) оскорбительного .xib:

useTraitCollections="NO"

Ответ 14

У меня была эта проблема несколько раз. Обычно решение Bonan работает для меня. В двух случаях, когда этого не произошло, проблема, казалось, заключалась в панели инструментов, которую я использовал. Когда я изолировал панель инструментов с нарушениями, переместившись на место в раскадровке, где контроллер просмотра панели инструментов больше не был виден на моем экране, мгновенно сканирующая версия ускоряет резервное копирование. Затем я перешел к контроллеру плохого представления и удалил панель инструментов до того, как система снова замедлилась. Я уверен, что есть способ исправить панель инструментов, а не удалять ее, хотя я не знаю, что это. У меня было значение Simulated Metrics, установленное как "inferred", как описано выше Luke Van In, поэтому это была другая проблема.

Ответ 15

  1. откройте окно Finder и перейдите к вашему проекту
  2. щелкните правой кнопкой мыши на файле .xcodeproj (на самом деле это пакет)
  3. выберите Показать содержимое пакета
  4. появляется новое окно
  5. удалить папку с именем xcuserdata
  6. перезагрузите ваш Mac

Ответ 16

После удаления всех видов вещей, перечисленных выше, и перезапуска Xcode. Решение было перезагрузить компьютер. Тупой я знаю, но ресурс как-то связан в IB.