我正在构建一个新闻应用程序,它基本上使用AFNetworkOperation从远程服务器获取数据(所有操作都放在NSOperationQueue中,以便正确管理同步过程和进度)。
每个AFNetworkOperation的每个完成块都会创建/删除/更新核心数据实体。
在同步过程的整个过程中,为了使所有更改保持不变,我使用以下代码行执行完整保存
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
dispatch_async(queue, ^{
NSLog(@"saveInBackground : starting...");
[[NSManagedObjectContext defaultContext] saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
NSLog(@"saveInBackground : finished!");
}];
});
不幸的是,它总是在我的保存操作期间阻塞主线程。
我可能不会正确使用MagicalRecord,因此欢迎任何建议。
答案 0 :(得分:0)
在MagicalRecord中深入挖掘之后,似乎我的代码运行良好并且根本不会阻止主线程。
我的问题不在于MagicalRecord,而是在我应该在完成afnetworking操作块的方式上使用它。
我将开始一个新的讨论,以提供有关它的全部细节。