Xcode 10.2 (и 10.2.1) приводит к сбою всей машины при преобразовании из Swift 4 в Swift 5.

У меня есть проект приложения Mac, который создается и запускается в XCode 10.2.1 с использованием Swift 4. Когда я пытаюсь преобразовать его в Swift 5, процесс запускается, а затем примерно на шаге 32 (примерно 158) машина блокируется до момент, когда он либо перезагружается, либо мне приходится принудительно выключать его. Что я должен искать, чтобы этого не произошло?

Под «блокировкой» я имею в виду, что все останавливается. Графика вращающегося колеса в XCode, показывающая, что что-то происходит, перестает вращаться. Указатель мыши замирает. Клавиатура не отвечает. Любая анимация на экране останавливается (например, если указатель - это вращающаяся пицца смерти - она ​​перестает вращаться). Если я оставлю ее достаточно долго, она может перезагрузиться - два звонка.

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

Я пробовал это на двух машинах — на моем Mac Mini 2012 года с 16 ГБ ОЗУ и на MBP, который на пару лет новее, с 8 ГБ ОЗУ. Одна и та же проблема на обоих.

Я также попытался установить версию Swift с 4.0 на 4.2 в проекте. Происходит то же самое — машина обрабатывает сдачу и блокируется в процессе. Однако на этот раз перед блокировкой я получаю диалоговое окно «Принудительный выход» и сообщение о том, что вся доступная память приложения была израсходована, и я должен принудительно закрыть приложения. В этот момент машина зависает, поэтому я не могу этого сделать.

Я пробовал несколько поисков по этому вопросу, но не нашел ничего, что описывает мою проблему.

У меня нет кода для показа, потому что я не знаю, какой код вызывает это (во всяком случае, это может быть, конечно, ошибка в XCode). Это может быть настройка в файле проекта Xcode.

Желаемые результаты - Xcode преобразует мой проект из Swift 4 в Swift 5.

Фактические результаты - Xcode полностью блокирует машину. Мне приходится принудительно выключать Mac и перезагружаться.

Итак, вопрос в том, что я должен искать, чтобы обойти эту проблему? У кого-нибудь еще возникла такая проблема? Что я могу попытаться решить? Зависание и перезагрузка немного настораживает.


person Paul Dunning    schedule 18.04.2019    source источник
comment
Попробуйте включить время компиляции для файлов в Swift 4. Это может дать подсказку. irace.me/swift-profiling   -  person Warren Burton    schedule 18.04.2019
comment
Xcode 10.2.1, выпущенный сегодня, может помочь. Было упоминание об исправлении времени сборки.   -  person Warren Burton    schedule 18.04.2019
comment
Спасибо, оба, я попробую засечь время копилки. Я получаю ту же проблему в 10.2.1 (я упоминал эту версию в исходном вопросе), что и 10.2.   -  person Paul Dunning    schedule 19.04.2019
comment
Если бы преобразование в Swift5 можно было запустить в терминале, возможно, это дало бы информацию о последней команде, которая использовалась XCode.   -  person Kamil.S    schedule 19.04.2019
comment
Хорошая мысль @Kamil.S Вы также можете наблюдать за сборкой в ​​навигаторе отчетов в Xcode, но она будет немного скрыта под модальным конвертером.   -  person Warren Burton    schedule 19.04.2019
comment
Ничто во время компиляции не выскакивает из-за того, что может быть застреванием в журнале. Компиляция проекта в Swift 4 занимает не так много времени (я думаю, 15-20 секунд). Конечно, нет ощущения, что он где-то застревает в процессе. @kamil.S - это возможно? Если да, то это может помочь. Прямо сейчас это модальное окно в конвертере покрывает изрядную часть окна Xcode, и, очевидно, когда система зависает, оно никуда не денется. Моя единственная другая мысль - вернуться к Xcode 10, посмотреть, будет ли он преобразован в Swift 4.2, а затем попытаться преобразовать в 5 в 10.2.1.   -  person Paul Dunning    schedule 19.04.2019
comment
Успех! Я вернулся к Xcode 10.0, установил соответствующие инструменты командной строки Xcode (на всякий случай) и преобразовал в Swift версии 4.2. Затем я переустановил Xcode 10.2.1 и соответствующие инструменты командной строки и снова запустил преобразование. Он прошел через (я думал, что когда он остановится на 32 в процессе, он снова зависнет), но выполнил задачу и позволил мне продолжить. После этого проект собирается без ошибок. Спасибо всем, что нашли время, чтобы поделиться своими мыслями.   -  person Paul Dunning    schedule 19.04.2019


Ответы (1)


Что сработало для меня, так это переместить один контроллер представления из каждого файла раскадровки и сохранить файл. По какой-то причине Xcode приводит к сбою моего компьютера, если я не делаю этого каждый раз, когда снова открываю Xcode. После того, как я сохранил каждый файл раскадровки, я без проблем преобразовал проект в Swift 5.

person Carter Cobb    schedule 27.08.2019