在过去,我们按照Apple 的要求使用 coredata ,NSManagedObjectContext每个线程一个,用于NSNotificationCenter观察NSManagedObjectContextDidSaveNotification,然后将更改合并回来。Apple 在其示例代码中向我们展示了正确的方式。
但是,它有点冗长,您必须编写一堆代码才能使其工作。iOS 5 附带了新方法performBlock:和performBlockAndWait:for NSManagedObjectContext. 现在可以将单个传递NSManagedObjectContext给所有线程,并使用performBlock:或performBlockAndWait:包装所有与coredata相关的代码,这应该会更容易,也不会让人头疼,但人们似乎并没有经常谈论这种新方式,甚至苹果本身, iOS 文档的“Concurrency with Core Data”章节和“ThreadedCoreData”示例代码仍然推荐NSManagedObjectContext每个线程一个。
所以我想知道,performBlock(AndWait):让人们不使用它有什么缺点吗?还是我说的“新方式”只是一个糟糕的设计?