在过去,我们按照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):
让人们不使用它有什么缺点吗?还是我说的“新方式”只是一个糟糕的设计?