在iPhone应用程序终止时删除文档文件夹中的文件

时间:2012-12-24 09:46:53

标签: ios ipad automatic-ref-counting uiapplicationdelegate uiapplication

我的iPhone应用程序会在运行应用程序时将多个内容下载到Documents文件夹。当应用程序要终止时,我想删除下载的文件。我的应用程序在目标4.3或更高版本上运行并启用ARC。从文档文件夹中删除内容的最佳位置是什么?

- (void)applicationWillTerminate:(UIApplication *)application
应用程序终止时未调用

2 个答案:

答案 0 :(得分:2)

寻找– applicationDidEnterBackground:而不是applicationWillTerminate

  

在iOS 4.0及更高版本中,当用户退出支持后台执行的应用程序时,将调用此方法而不是applicationWillTerminate:方法。

applicationWillTerminate表示应用程序在iOS4之前的世界中“退出”的含义。

在现代(即iOS4 +)应用中,当用户退出应用时,应用会转到后台并暂停(因此用户可以快速重新输入)。因此,应用程序实际上并未终止,如果需要恢复内存,iOS仍然可以随时终止它。这种情况经常发生,这意味着如果您暂停应用程序并在第二天返回应用程序,您会发现该应用程序已终止。不好的是,被终止的应用会在 收到applicationWillTerminate消息时被终止,因此applicationDidEnterBackground:是您自己必须清理的最后“保证”机会当用户退出应用时。

无论如何,如果您在应用程序plist文件中设置applicationWillTerminate,则当用户退出您的应用时(相应地终止您的应用),您仍然可以调用UIApplicationExitsOnSuspend

为了完整起见,我还要添加applicationWillTerminate

  在应用程序在后台运行(未暂停)并且系统因某种原因需要终止它的情况下,可能会调用

但这是一个实际在后台运行的应用程序的特定用例(在那里​​计算了一定数量的应用程序类型)。

总结一下,清理文档的正确位置是:

  1. applicationDidEnterBackground如果您正在运行iOS4 +但未在应用程序plist文件中设置UIApplicationExitsOnSuspend;

  2. applicationWillTerminate如果您在app3 plist文件中运行iOS3 设置UIApplicationExitsOnSuspend

答案 1 :(得分:0)

因为如果你在iOS 4+上运行(并且应用程序在进入后台时没有强行退出),你将不会获得applicationWillTerminate:如果你真的只是在应用程序被终止的情况下寻找清理的东西,你应该在applicaitonDidFinishedLaunching:

中完成