何时删除NSTemporaryDirectory中的文件

时间:2011-08-04 06:39:59

标签: objective-c multitasking

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

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

提前致谢

2 个答案:

答案 0 :(得分:5)

你可以使用一个在iOS上运行良好的旧UNIX技巧(我知道,因为我使用它):

  • 保存文件。
  • 打开它们。
  • 记住文件描述符。
  • 删除文件(这是神奇的部分)。

效果是文件保持打开状态,只要不关闭它们即可。但是他们的目录条目已经消失,即文件不再显示在列出的目录中。现在很酷的是,只要你关闭其中一个文件描述符,相应的文件就会自动从磁盘中完全删除。您是否明确地在其上调用close或者您的应用是否终止或崩溃无关紧要,在所有这些情况下,操作系统都会删除这些文件,您无需担心它。

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

答案 1 :(得分:0)

applicationWillResignActive 在你的Appdelegate是最好的选择。