Когда App Store загружает обновление, он устанавливается в новый каталог перед перемещением файлов из предыдущей установки. Files inside these application directories are migrated:
Documents
Library
Файлы в других местах, могут или не могут быть перенесены. Ваше приложение не должно полагаться на другие файлы, присутствующие после обновления. Когда iOS обнаруживает условие низкого дискового пространства, он выбирает, какие файлы следует очищать. Файлы в NSCachesDirectory
и NSTemporaryDirectory()
могут быть очищены. Файлы или каталоги с атрибутом «Не создавать резервные копии» (NSURLIsExcludedFromBackupKey
/kCFURLIsExcludedFromBackupKey
) не будут очищены, и ваше приложение будет отвечать за их очистку. From the iOS Data Storage Guidelines:
Используйте атрибут «не создавать резервные копии» для указания файлов, которые должны оставаться на устройстве, даже в ситуациях с низким уровнем хранения. Используйте этот атрибут с данными, которые можно воссоздать, но они должны сохраняться даже в ситуациях с низким уровнем хранения для правильной работы вашего приложения или потому, что клиенты ожидают его доступности в автономном режиме. Этот атрибут работает с отмеченными файлами независимо от того, в каком каталоге они находятся, включая каталог «Документы». Эти файлы не будут очищены и не будут включены в пользовательскую iCloud или iTunes. Поскольку эти файлы используют пространство хранения на устройстве, ваше приложение отвечает за мониторинг и очистку этих файлов периодически.
Существует важное замечание по поводу этого атрибута в NSURL.h:
верно, если ресурс должен быть исключен из резервной копии, иначе ложь (чтения-записи, тип значения булева NSNumber). Это свойство полезно только для исключения кеша и других файлов поддержки приложений, которые не нужны в резервной копии. Некоторые операции, обычно выполняемые с документами пользователя, приведут к тому, что это свойство будет сброшено на значение false, и поэтому это свойство не должно использоваться в пользовательских документах.
Если этот атрибут используется в сочетании с NSFileProtectionKey
, это может привести к неопределенному поведению. Атрибут резервного копирования считывается и записывается одной подсистемой, а ключ защиты файлов используется другим. Во время обновления или восстановления приложения файл может быть перенесен или восстановлен без сохранения значения сохранения файла. Кроме того, добавление атрибута защиты данных в файл заменит старый файл на защищенный. Это прозрачно для вашего приложения, но может иметь побочный эффект при обновлении или восстановлении, чтобы установить незащищенную версию. Это одна из многих причин, по которой рекомендуется устанавливать этот атрибут всякий раз, когда файл записывается вашим приложением.
Является ли это файл или каталог который также имеет атрибут NSURLIsExcludedFromBackupKey? – quellish
Да, это правильно. Как это повлияет на это? – Blaze