Когда удалять файлы в NSTevenDirectory - PullRequest
3 голосов
/ 04 августа 2011

Я создаю многозадачное приложение, которое включает в себя функциональность для просмотра больших PDF-файлов.Чтобы избежать загрузки файла каждый раз, когда пользователь хочет просмотреть файл, я загружаю файл в NSTevenDirectory и использую UIDocumentInteractionController для обеспечения «Быстрый просмотр» и «Открыть в iBook».очистить все временные файлы, когда пользователь выходит из приложения, чтобы избежать использования места на устройстве пользователя.Поскольку мое приложение является многозадачным, а метод applicationWillTerminate никогда не вызывается, файлы никогда не удаляются.Когда лучше всего очистить NSTevenDirectory и как я могу это сделать?Я что-то упустил?

Заранее спасибо

Ответы [ 2 ]

5 голосов
/ 04 августа 2011

Вы можете использовать старый трюк UNIX, который также отлично работает на iOS (я знаю, так как использую его):

  • Сохраните файлы.
  • Откройте их.
  • Запомните дескрипторы файлов.
  • Удалите файлы (это волшебная часть).

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

Недостатком является то, что вам нужно изменить свой код, чтобы он мог работать с файловыми дескрипторами, поскольку вы больше не можете получить доступ к файлам по имени.

0 голосов
/ 04 августа 2011

applicationWillResignActive в вашем Appdelegate - лучшее место, чтобы сделать.

...