在 Core Data 中 10 秒后杀死一个任务
Posted
技术标签:
【中文标题】在 Core Data 中 10 秒后杀死一个任务【英文标题】:Kill a task after 10 seconds in Core Data 【发布时间】:2010-10-03 21:21:37 【问题描述】:我有一个有时需要很长时间才能运行的函数。我想尝试运行它 10 秒钟,然后如果没有完成就杀死它。如何在 iPhone 上的 Objective C 中做到这一点?
对于一些数据库中有大量数据的用户来说,创建持久存储协调器会失败,因为对象模型合并需要太长时间。我们已将该数据存储移出数据库,但如果模型合并需要超过设定的时间限制,我想终止模型合并,并删除数据库文件,以便用户可以继续使用该应用程序。
NSPersistentStoreCoordinator* psc = [[[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel: [self managedObjectModelForDatabase:dbName]] autorelease];
【问题讨论】:
仅供参考,我编辑了标题和标签以更好地反映您所追求的信息。 【参考方案1】:你能否在不同的线程中执行合并(不要忘记为这个后台线程创建不同的 NSManagedObjectContext),然后让主线程在等待来自后台迁移线程的异步完成事件时显示进度消息?
我在其中一个包含大量数据的应用程序中执行此操作,以避免 iPhone 在合并过程中杀死我的应用程序。
【讨论】:
【参考方案2】:您可以使用-performSelector:withObject:afterDelay:
安排将来发送的消息。
【讨论】:
我了解您的意思,但可能需要一些详细说明。 是的。我知道那件事。但是我需要超时的功能是库代码,所以我不能在其中添加标志检查或其他东西。不知道怎么打断线程。 我认为我们需要更多信息。你到底想取消什么?以上是关于在 Core Data 中 10 秒后杀死一个任务的主要内容,如果未能解决你的问题,请参考以下文章
如果从 Core Data SwiftUI 中删除,则删除本地通知