Невозможно собрать проект Mac в XCode14.0/14.1 с macOS ventura
Недавно я обновился до macOS 13.0, и для этой минимальной версии XCode требуется серия 14.x. Но мой существующий проект так и не был успешно построен. Он застревает в какой-то момент.
Это не терпит неудачу. Скриншот процесса сборки прикреплен ниже. Это не указывает на какой-либо конкретный класс. Похоже, что есть много классов, которые, наконец, успешно скомпилированы, но процесс сборки в какой-то момент все еще зависает:
Видел похожие темы, как показано ниже, на страницах Apple, но ничего не работает. У кого-нибудь есть разрешение?
Ошибка компиляции проекта Xcode 14
Ошибки компиляции XCode 14 сразу исчезают или не появляются вовсе
1 ответ
Нечто подобное случалось со мной в прошлом несколько раз. Если компилятор Swift зависает в середине сборки, обычно проблема заключается в том, что есть какое-то выражение, слишком сложное для Swift, чтобы сделать вывод о типе.
Что вам нужно сделать, так это сначала найти точное утверждение, которое вызывает зависание. Вот как я это делаю:
Сначала выясните, какой исходный файл вызывает проблему. Посмотрите журнал сборки, чтобы понять это (журнал сборки можно найти, просмотрев навигатор отчетов ⌘9). Найдите журнал сборки и нажмите на него. Журнал сборки появится в окне редактора.
Один из компиляторов все еще будет выполняться, и его файл — тот, который вам нужен.
Следующее, что нужно сделать, это закомментировать весь код и перекомпилировать. На этот раз компиляция завершится (если у вас есть нужный файл или только один), но, вероятно, с большим количеством ошибок. Затем вы добавляете код обратно, функция за функцией, пока одна из них не приведет к зависанию компиляции. Если неясно, какая строка функции вызывает проблему, снова закомментируйте ее, а затем добавляйте строки одну за другой, пока компиляция снова не прервется.
После того, как вы нашли строку, вам нужно упростить вывод типа в этой строке. Если это замыкание, попробуйте добавить явное объявление для его параметров и возвращаемого типа. Если он включает какой-то сложный массив, попробуйте добавить аннотацию типа к его объявлению. Также попробуйте разбить сложные выражения на несколько более простых выражений.
На этот вопрос нет универсального ответа, но обычно, как только вы нашли точную строку, которая вызывает проблему, должно быть достаточно очевидно, как ее исправить.