Objective c 何时删除NSTemporaryDirectory中的文件

Objective c 何时删除NSTemporaryDirectory中的文件,objective-c,multitasking,Objective C,Multitasking,我正在构建一个多任务应用程序,其中包括查看大型pdf文件的功能。为了避免每次用户想要查看该文件时都下载该文件,我将该文件下载到NSTemporaryDirectory中,并使用UIDocumentInteractionController提供“快速查看”和“在iBooks中打开” 我希望在用户退出应用程序时清除所有临时文件,以避免占用用户设备上的空间。由于我的应用程序是多任务的,而且永远不会调用我的applicationWillTerminate方法,所以这些文件永远不会被删除。何时清除NSTe

我正在构建一个多任务应用程序,其中包括查看大型pdf文件的功能。为了避免每次用户想要查看该文件时都下载该文件,我将该文件下载到NSTemporaryDirectory中,并使用UIDocumentInteractionController提供“快速查看”和“在iBooks中打开”

我希望在用户退出应用程序时清除所有临时文件,以避免占用用户设备上的空间。由于我的应用程序是多任务的,而且永远不会调用我的applicationWillTerminate方法,所以这些文件永远不会被删除。何时清除NSTemporaryDirectory是最好的选择,如何清除?我错过什么了吗


提前感谢

您可以使用一个旧的UNIX技巧,它在iOS上也可以正常工作(我知道,因为我使用了它):

  • 保存文件
  • 打开它们
  • 记住文件描述符
  • 删除文件(这是神奇的部分)
其效果是,只要不关闭文件,它们就会保持打开状态。但是它们的目录条目消失了,也就是说,这些文件将不再显示在目录列表中。现在最酷的事情是,只要关闭其中一个文件描述符,相应的文件就会自动从磁盘上完全删除。不管你是显式地调用
close
,还是你的应用程序终止或崩溃,在所有这些情况下,文件都会被操作系统删除,你不必担心


缺点是,您需要更改代码,以便它可以与文件描述符一起工作,因为您无法再通过名称访问文件。

应用程序将重新激活
在您的应用程序中,Delegate是最好的选择。

根据Apple的说法,“当应用程序即将从活动状态移动到非活动状态时发送。这可能发生在某些类型的临时中断(如来电或短信)或当用户退出应用程序并开始转换到后台状态时。”我只想在应用程序正常关闭时清除文件。有什么想法吗?显然,使用
应用程序标识符背景:
。您是如何管理它的?