2013-11-01 51 views
0

我已将iCloud集成到我的应用程序中,并且能够在我的持久性存储中成功保存iCloud更改。目前,我做了以下内容: -NSManagedObjectContext子队列与立即执行performblock

//我NSManagedObjectContext(使用主线程)被声明为NSMainQueueConcurrencyType

  1. 倾听iCloud的通知
  2. 使用更改合并到主managedObjectContext performBlock

我也看到了以下方法: -

// NSManaged ObjectContext的(由主线程使用)被声明为NSMainQueueConcurrency类型

  1. 创建具有NSPrivateQueueConcurrency类型中执行的方法及其并发类型的临时管理对象上下文时的iCloud发送通知
  2. 使主MOC作为父临时MOC
  3. 确实省了临时MOC使用(这将推动改变主MOC)
  4. 确实省上主要MOC performBlock

因此,这两种方法都使用performBlock来保存对持久性存储的更改。那么,任何方法都有什么特别的优势/劣势?

回答

0

最大,

一切都是权衡。从使用儿童MOC获得的巨大胜利是隐含的父母状态缓存,并且节省相当快。 (它们的速度很快,因为它们只是将数据向上推送到父 - 子堆栈中,您仍然需要从父级保存数据以保留数据。)

您的架构的缺点是远程保存发生在您的主循环。如果他们花费很多时间,而且保存时间有时会花费过多的时间,那么UI响应会受到影响。

在回答你的问题时,-performBlock:调用不会改变这些事实。他们所做的只是将处理推迟到主循环的下一次迭代。

安德鲁