【发布时间】:2010-11-24 07:55:02
【问题描述】:
我在我的应用程序中使用 Grand Central Dispatch (GCD) 来完成一些繁重的工作。该应用程序使用 Core-Data 进行数据存储。这是我的场景(以及相关问题):
dispatch_queue_t main_queue = dispatch_get_main_queue();
dispatch_queue_t request_queue = dispatch_queue_create("com.app.request", NULL);
dispatch_async(request_queue, ^{
MyNSManagedObject *mObject = [self.fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
// …
// <heavy lifting>
// …
// …
// <update mObject>
// …
[self saveManagedObjectContext];
});
由于[self saveManagedObjectContext],fetchResultsController 委托方法被自动调用。因此,UI 更新逻辑启动。
现在我的问题是,我需要将main_queue 用于-saveManagedObjectContext 吗?我应该在main_queue 中对我的NSManagedObject 执行所有操作吗?更新NSManagedObject 的某些操作可能需要2-3 秒。请指教。
【问题讨论】:
标签: iphone core-data objective-c-blocks grand-central-dispatch