Как очистить кеши и очистить все цели Xcode 4 и новее

239

Джонатан предлагает здесь: Xcode Включает файлы .xib, которые были удалены! что очистка всех целей и очистка кешей решит проблему с Xcode, включая удаленные файлы .xib, но я не могу найти способ очистить кеш в Xcode 4.

Как это сделать в Xcode 4?

Свяжи меня
источник
Вот мое [решение сценария оболочки] [1], которое удаляет производные данные для xCode 5 и 6. [1]: stackoverflow.com/a/27977848/1231948
Sheamus

Ответы:

515

Command-Option-Shift-K, чтобы очистить папку сборки. Еще лучше выйти из Xcode и очистить ~ / Library / Developer / Xcode / DerivedData вручную. Удалите все его содержимое, потому что есть ошибка, при которой Xcode будет запускать старую версию вашего проекта, которая где-то там. (Xcode 4.2 покажет вам папку «Производные данные»: выберите «Окно»> «Органайзер» и переключитесь на вкладку «Проекты». Нажмите стрелку вправо справа от имени папки «Производные данные».)

В симуляторе выберите «Симулятор iOS»> «Сбросить содержимое и настройки».

Наконец, для полноты вы можете удалить содержимое папок / var / ; там тоже происходит кеширование.

ВНИМАНИЕ: Удаление папок / var / может вызвать проблемы, и вам может потребоваться восстановить или переустановить операционную систему после этого.

РЕДАКТИРОВАТЬ: Я только что узнал, что если вы боитесь использовать / var / folder /, вы можете использовать следующую команду в терминале для более целенаправленного удаления:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"

РЕДАКТИРОВАТЬ: Для некоторых проблем, связанных со Swift, я нашел полезным удалить ~ / Library / Caches / com.apple.dt.Xcode . Вы теряете много, когда делаете это, как ваши запасные копии загруженных комплектов документации, но это может стоить того.

матовый
источник
6
Отлично, очистка пути: библиотека / разработчик / Xcode / DerivedData + сброс содержимого и настройка симулятора работает!
Время
10
Путь, кажется, находится в моем домашнем каталоге (примечание тильда): ~ / Library / Developer / Xcode / DerivedData Возможно, это было очевидно для других, но в случае, если у кого-то еще есть проблема ...
Виктор Ван Хи
37
Хе-хе, будучи übern00b, я удалил / var / db, где нашел что-то из Xcode / моего проекта. Это стоило мне пяти часов журналирования в файловой системе, восстановления и переустановки Lion и т. Д. Будьте осторожны! :-)
Йонас Быстрем
4
@Jonas Я чувствовал себя обязанным добавить предупреждение к совету «delete / var / folder». Это не для непосвященных!
LearnCocos2D
7
Не запускайте папки rm -rf / var / с sudo, иначе вы восстановите себя, как я :)
Josip B.
68

Команда-Option-Shift-K должна это сделать. Кроме того, перейдите в меню продукта, нажмите клавишу параметров, теперь параметр «Очистить» изменится на «Очистить папку сборки ...» и выберите этот параметр.

SRAM
источник
Нет, очень плохо .. Я просто изменил и переименовал файл XIB и очистил приложение, как вы сказали, но оно все равно загружается нормально без ошибок.
Tieme
2
Ничего себе, никогда не узнавайте об этом альтернативном трюке для меню Mac OS X !!! Это действительно определяет значение слова «Alt».
trusktr
20

Помимо выполнения следующих действий вы можете столкнуться с этой проблемой, если файлы раскадровки вашего приложения локализованы. Сначала сделайте каждый из них:

  • Чистая сборка
  • Сброс симулятора
  • Перезапустите Xcode
  • Удалите вашу DerivedDataпапку в ~ / Library / Developer / Xcode / DerivedData
  • Перезагрузить компьютер

В конечном итоге мне удалось заново сгенерировать файлы локализации раскадровки и удалить английскую локализацию (что было ненужно, потому что базовый языковой стандарт - английский). Чтобы перезагрузить строки раскадровки, см. Этот ответ в StackOverflow .

Я заметил, что обновляются нетекстовые части моего раскадровки, а не локализованный текст. Если у вас есть локализация в вашем приложении, я бы порекомендовал проверить, обновляются ли ваши локализации (даже если это .stringsфайлы).

Сэм Спенсер
источник
2
Удаление содержимого (не всей папки) из папок / var / сделало это за меня! Если вы ищете /var/folders...Выберите Перейти к папке из меню Go Finder и введите / var / в качестве местоположения папки.
Патриция
+1 к инструкции / var / folder ... очистка и удаление DerivedData работали частично, но тот добился
цели
1
1. Чистая сборка 2. Сброс симулятора 3. Перезапустите Xcode, который решил мою проблему.
Алан Донг
ПРЕДУПРЕЖДЕНИЕ! Помните, что удаление содержимого из /var/folders/может вызвать серьезные проблемы и может привести к необходимости полной переустановки OSx из консоли восстановления!
Магнус В.
18

Я нашел другой способ в дополнение к команде + опция + Shift + K. В XCode 4.2 есть органайзер, который можно открыть из правого верхнего значка. Вы можете очистить все архивы и сохраненные параметры проекта оттуда. Это помогло моей ситуации (я видел старые удаленные файлы в mainBundle).

Mert
источник
3
Да, это гораздо более простой способ, чем очистка ~ / Library / Developer / Xcode / DerivedData вручную
Tieme
10

Я вырывал волосы из головы, потому что думал, что у меня такая же проблема. При создании приложения я не получил тот же результат на моем iPhone, как на симуляторе.

Проблема была в том, что я как-то сделал локализованную версию файла MainStoryboard.storyboard. Поэтому, когда я запустил приложение на своем телефоне, оно показало датскую версию ... и симулятор показал английскую версию.

Да, я новичок! :)

thehatisonfire
источник
2
У меня были похожие проблемы. Делал command-option-shift-K безрезультатно. Удалено ... DerivedData, нет решения. Оказалось, что изменение верхнего уровня XIB меняет только английскую версию, и я тестировал голландскую версию XIB. Вздох ...
fishinear
1
Также имейте в виду, что существуют способы локализации вашего приложения, где для каждого языка создаются отдельные текстовые файлы. В таких случаях изменение .xib ничего не делает.
dandan78
7

Для удаления всех производных данных и кеша модуля /var/foldersиспользуйте этот маленький скрипт ruby .

derivedDataFolder = Dir.glob(Dir.home + "/Library/Developer/Xcode/DerivedData/*")
moduleCache = Dir.glob("/var/folders/**/com.apple.DeveloperTools*")
FileUtils.rm_rf derivedDataFolder + moduleCache

Это просто решило fatal error: malformed or corrupted AST file: 'Unable to load module "/var/folders/ошибку для меня.

orkoden
источник
1
Очевидная ошибка, вызывающая «фатальную ошибку: искаженный или поврежденный файл AST:« Невозможно загрузить модуль », и сбой мягкого решения, предложенного XCode, все еще происходит в XCode 6.1. И решение выйти из Xcode и вручную очистить ~ / Library / Developer / Xcode / DerivedData вручную все еще работает. Мне не нужно было все там чистить; только две подпапки: ModuleCache и подпапка, имя которой относится к проблемному проекту.
Джерри Кринок
5

У меня были некоторые проблемы со сбоем Xcode 5.1, когда я открывал окно документа.

Я не уверен в причине этого, потому что я также обновлял наборы документов, пока открывал окно.

Ну, в Xcode 5 каталог модулей теперь находится в папке производных данных, которую я по понятным причинам не удалил. Я удалил содержимое ~ / Library / Developer / Xcode / DerivedData / ModuleCache и ~ / Library / Preferences / com.apple.Xcode.plist, и все, как мне кажется, работает после перезапуска Xcode.

McUsr
источник
1

При использовании «модели данных» в инспекторе есть опции для генерации классов, для меня это было так, поскольку уже существовал класс с существующим именем.

Codegen: решил это для меня.

введите описание изображения здесь

Wayne
источник
1

Мои "DerivedData" с Xcode 10.2 и Mojave были здесь:

MacHD / Users / [MyUser] / Library / Developer / Xcode

Махди Мокадаси
источник
0

Вы должны быть осторожны с файлом XIB. Я перепробовал все вышеперечисленное и у меня ничего не получалось. Я использовал пользовательские кнопки UIB, определенные в xib, и понял, что это может быть связано с тем, что я назначил атрибуты, которые не менялись программно. Если вы определили изображения или текст там, удалите их. Когда я это сделал, мои программные изменения начали вступать в силу.

Alyoshak
источник
0

Вот мое решение сценария оболочки , которое удаляет производные данные и очищает кэшированные активы проекта для Xcode 4, 5 и 6.

Иногда простой вызов rm -rf в каталоге Derived Data оставляет файл или два устаревших файла, но мой сценарий зацикливается, пока все файлы не будут удалены.

Sheamus
источник
0

Я перепробовал почти все, но не смог помочь, мне помогло отключение SIP (System Integration Protection), и это работает, я не знаю, что происходит, когда и как, но системный файл где-то запутывается и вызывает это ... хотя могут быть риски чтобы отключить это, очевидно,

вот как

1. Включите Mac и удерживайте клавиши [command] + [R] для доступа к разделу восстановления.

2. В разделе восстановления нажмите «Утилиты» в строке меню и выберите «Терминал».

3.Введите следующую команду в терминал и нажмите Enter для ее выполнения: csrutil disable

4.После выполнения команды выйдите из терминала и перезагрузите Mac. Когда вы снова войдете в OS X, SIP будет отключен.

Кастро Звелитини
источник
1
Звучит действительно рискованно. Что делает SIP?
Время
Защита целостности системы защищает системные файлы и каталоги, которые помечены для защиты. В
целом