NSManagedObjectContext performBlockAndWait: não executa no thread de segundo plano?
Eu tenho um NSManagedObjectContext declarado assim:
- (NSManagedObjectContext *) backgroundMOC {
if (backgroundMOC != nil) {
return backgroundMOC;
}
backgroundMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
return backgroundMOC;
}
Observe que ele é declarado com um tipo de simultaneidade de fila privada, portanto, suas tarefas devem ser executadas em um thread de segundo plano. Eu tenho o seguinte código:
-(void)testThreading
{
/* ok */
[self.backgroundMOC performBlock:^{
assert(![NSThread isMainThread]);
}];
/* CRASH */
[self.backgroundMOC performBlockAndWait:^{
assert(![NSThread isMainThread]);
}];
}
Por que chamarperformBlockAndWait
executar a tarefa no thread principal, em vez de thread de fundo?