1

我正在构建一个新闻应用程序,它基本上使用 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,因此欢迎任何建议。

4

1 回答 1

0

在深入挖掘 MagicalRecord 之后,似乎我的代码运行良好,根本没有阻塞主线程。

我的问题不在 MagicalRecord 上,而是在我应该在 afnetworking 操作的完成块上使用它的路上。

我将开始一个新的讨论,以提供有关它的全部细节。

于 2013-05-26T17:07:11.527 回答