我什么时候应该为我的iOS应用程序清除废弃数据?在发布或终止期间?

时间:2013-10-30 14:54:26

标签: ios memory-management application-lifecycle

我使用CoreData,我正在考虑何时删除废弃(或过期)数据。

从我的想象中可以看出以下几点:

  1. 应用启动时。
  2. 当应用终止时。 (在app delegate的applicationWillTerminate:
  3. 我想,一个是无风险的,但我不希望用户在清除过程中等待。 (我知道看门狗例外。如果清除时间超过20秒,我将准备一个视图控制器等待。)

    两个看起来不错。用户看不到等待时间。但是,我不确定这一点是否合适?有人说背景过程时间有限。

1 个答案:

答案 0 :(得分:1)

无论哪种方式,您最有可能从在辅助线程上运行清理中受益。您很可能无法使用第二个选项:

applicationWillTerminate相关的Apple docs

  

此方法的实现大约需要五秒钟   执行任何任务并返回。如果方法之前没有返回   时间到期,系统可能会完全终止进程。

您可以使用的一个选项是在applicationDidEnterBackground:清理,但也有一些复杂情况:

  

此方法的实现大约需要五秒钟   执行任何任务并返回。如果您需要额外的时间来执行   任何最终任务,您都可以从中请求额外的执行时间   系统通过调用beginBackgroundTaskWithExpirationHandler:。在   练习,你应该从applicationDidEnterBackground:as返回   尽快。如果方法在时间运行之前没有返回   你的应用程序被终止并从内存中清除。

这可能是更好的解决方案,您可以通过我链接的文档深入了解一些建议。在应用程序启动期间,它可能最容易实现。