У каждого iOS-разработчика был момент, когда
Xcode вдруг начинал вести себя странно: код не менялся, но сборка падала,
SwiftUI Preview выдавал ошибку вместо интерфейса, зависимости переставали подключаться. В подобных случаях часто помогает удаление
Derived Data.
Раньше приходилось вручную искать папку
Derived Data, но в
Xcode 27 это можно сделать прямо из выпадающего меню. Мелочь, а для тысяч разработчиков - это целое событие.
Что такое Derived Data:
Derived Data - это папка, куда
Xcode складывает все, что генерирует в процессе сборки: скомпилированные модули, индексы, кэши пакетов, логи и прочие промежуточные артефакты. Это ускоряет повторные сборки.
Но у этого подхода есть обратная сторона. Если кэш расходится с актуальным состоянием проекта,
Xcode начинает вести себя непредсказуемо.
Причина почти всегда одна: Xcode держится за устаревшее состояние. И единственный способ сбросить его - удалить
Derived Data.
Как это работало раньше:
Самый простой способ удалить
Derived Data - выполнить в терминале команду:
rm -rf ~/Library/Developer/Xcode/DerivedData
Но это удаляет кэш для всех проектов сразу. На машине, где несколько активных рабочих пространств, это означает лишние пересборки и потерю времени. Можно открыть
Finder, найти папку и удалить только нужный проект. Но это каждый раз занимает лишнее время.
Что изменилось в Xcode 27:
В бете появился пункт в меню
Product ->
Delete Derived Data. Он удаляет кэш только для текущего проекта. Чисто, быстро, безопасно для других проектов.
Для
CI и автоматизации по-прежнему есть командная строка:
xcodebuild -workspace App.xcworkspace -scheme App -derivedDataPath .build/DerivedData clean build
Но для локальной разработки новая возможность облегчает жизнь разработчиков.
Важный нюанс - новый пункт меню не решает проблему:
Многие разработчики удаляют
Derived Data по привычке. Сборка упала - удали. Превью сломалось - удали. Это стало универсальным ответом на любые странности
Xcode.
Но если вы удаляете
Derived Data каждый день, проблема не в кэше. Кэш - это симптом, а не причина. Что-то не так с конфигурацией проекта, с генерацией файлов, с переключением веток, с версией инструментов.
Новый пункт меню делает восстановление быстрее, но не делает проект здоровее. Хороший разработчик не просто удаляет кэш, а пытается понять причину, почему возникла проблема.
Вывод:
Новый пункт меню
Delete Derived Data в
Xcode 27 - это не революция, но очень полезное дополнение.
Apple наконец-то официально признала: кэш сборки - это техническая деталь, а не часть проекта. Его можно и нужно сбрасывать, когда он начинает мешать.
Но главное здесь не переборщить. Если вы удаляете
Derived Data каждый день, проблема не в кэше. Он всего лишь маскирует реальную причину, которая прячется в конфигурации проекта, зависимостях или процессах сборки. Удаление кэша - это временное решение. Найдите и устраните корень проблемы, и тогда новый пункт меню понадобится вам гораздо реже.