Ответ 1
Short:
Will iOS clear /Library/Caches for me when the app is updated
Нет
Возможно ли, что iOS очистит все или части Application_Home/Library/Caches
во время обновления? Да
or I need to clear it myself?
Вам нужно убедиться, что очищено.
Будьте готовы к обоим ситуациям.
Откуда вы узнали, обновлено ли ваше приложение? См. iOS Application Update Test
Long
Файлы, сохраненные во время обновлений приложений Когда пользователь загружает обновление приложения, iTunes устанавливает обновление в новом приложении каталог. Затем он перемещает файлы данных пользователей из старого перед установкой в новую директорию приложения перед удалением старый установка. Файлы в следующих каталогах гарантированы сохраняться в процессе обновления:
- Application_Home/Документы
- Application_Home/Library
Хотя файлы в других каталогах пользователя также могут быть перемещены, вы не должны полагаться на то, что они присутствуют после обновления.
От Яблоков Документация: Среда выполнения приложений - Резервное копирование и восстановление
Application_Home/Library/Caches Используйте этот каталог для записи любых файлы поддержки приложений, которые вы хотите сохранить между запуска приложений или во время обновлений приложений. Ваш приложение обычно несет ответственность за добавление и удаление этих файлы. Он также должен иметь возможность воссоздать эти файлы по мере необходимости потому что iTunes удаляет их во время полного восстановления устройства. В iOS 2.2 и более поздних версиях содержимое этого каталога не копируется от iTunes.
От Яблоков Документация: Среда выполнения приложений - Файловая система (daveoncode)
Вот пример того, когда он очищает кеш во время "обновления":
Вы устанавливаете приложение X V1.0. Обед это один раз и начало делать что-то еще. iOS и нуждается в восстановлении. Разработчик выпускает V1.1. Вы обновляете приложение в iTunes на своем Mac. Вы восстанавливаете свое устройство через iTunes. iTunes устанавливает V1.1. Пользователь обещает ваше приложение. Ваше приложение не получает уведомления о том, что все это произошло, но все файлы в Application_Home/Library/Cache
исчезли (iTunes removes them during a full restoration of the device
).
Действительно важная информация там: It should also be able to re-create these files as needed
. Как Кендалл также указал, что это кеш, поэтому файлы могут быть удалены из него операционной системой в любой момент. Поэтому каждый раз, когда вы загружаете любой файл из Application_Home/Library/Caches
, вам приходится учитывать, что файл больше не существует (Кендалл коснулся этого).
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
if(![fileManager fileExistsAtPath:[cachePath stringByAppendingPathComponent:@"myfile.zip"]]) {
//create it, copy it from app bundle, download it etc.
}
//start using it