我使用CoreData,我正在考虑何时删除废弃(或过期)数据。
从我的想象中可以看出以下几点:
applicationWillTerminate:
)我想,一个是无风险的,但我不希望用户在清除过程中等待。 (我知道看门狗例外。如果清除时间超过20秒,我将准备一个视图控制器等待。)
两个看起来不错。用户看不到等待时间。但是,我不确定这一点是否合适?有人说背景过程时间有限。
答案 0 :(得分:1)
无论哪种方式,您最有可能从在辅助线程上运行清理中受益。您很可能无法使用第二个选项:
与applicationWillTerminate
相关的Apple docs:
此方法的实现大约需要五秒钟 执行任何任务并返回。如果方法之前没有返回 时间到期,系统可能会完全终止进程。
您可以使用的一个选项是在applicationDidEnterBackground:
清理,但也有一些复杂情况:
此方法的实现大约需要五秒钟 执行任何任务并返回。如果您需要额外的时间来执行 任何最终任务,您都可以从中请求额外的执行时间 系统通过调用beginBackgroundTaskWithExpirationHandler:。在 练习,你应该从applicationDidEnterBackground:as返回 尽快。如果方法在时间运行之前没有返回 你的应用程序被终止并从内存中清除。
这可能是更好的解决方案,您可以通过我链接的文档深入了解一些建议。在应用程序启动期间,它可能最容易实现。