我注意到可以NSManagedObjectContext
使用NSMainQueueConcurrencyType
to performBlockAndWait
: 并在接收者的(主)队列以外的队列上执行块。
例如,如果 my是 type并且 my是 type ,则以下代码将导致我parentContext
执行childContext
's 队列上的块:parentContext
NSMainQueueConcurrencyType
childContext
NSPrivateQueueConcurrencyType
[childContext performBlockAndWait:^{
//Thread 1, Queue: NSManagedObjectContext Queue
[parentContext performBlockAndWait:^{
//Thread 1, Queue: NSManagedObjectContext Queue
//This is the same queue as the child context's queue
}];
}];
相反,以下代码按预期工作——我parentContext
在主队列上执行块:
[childContext performBlock:^{
[parentContext performBlockAndWait:^{
//Thread 1, Queue: com.apple.main-thread
}];
}];
这是预期的行为吗?由于文档状态,这肯定让我感到困惑"performBlockAndWait: synchronously performs a given block on the receiver’s queue."