我已经看到了许多将 CoreData 与多个 ManagedObjectContexts 一起使用的示例(以新的 iOS5+ Parent/Child 方式),例如:
//
// persistentStore (on disk)
// |
// persistentManagedObjectContext (exclusively for saving)
// |
// mainThreadManagedObjectContext (for managedObject's used on the mainThread)
// |
// childManagedObjectContext (created "on the fly" for background task, and destroyed when saving is done)
//
我认为在上面的 3 层方法中是否正确,在子 MOC 上执行的每次提取都会导致至少 3 个读取的任何对象的副本保存在内存中,每个 MOC 中都有一个(在任何内部消息传递中可能还有更多CoreData 在 MOC 之间使用)?
如果我有一个后台任务读取一些数据(例如图像),进行一些处理(例如创建缩略图)并写入数据库,但不直接/立即更新 UI,那么我认为这种方法是否正确也不合适,因为更新将不必要地通过主上下文,从而影响主线程并影响 UI 性能。