NSManagedObjectContext performBlockAndWait: nie działa na wątku w tle?
Mam NSManagedObjectContext zadeklarowany tak:
- (NSManagedObjectContext *) backgroundMOC {
if (backgroundMOC != nil) {
return backgroundMOC;
}
backgroundMOC = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
return backgroundMOC;
}
Zauważ, że jest zadeklarowany z prywatnym typem współbieżności kolejek, więc jego zadania powinny być uruchamiane na wątku w tle. Mam następujący kod:
-(void)testThreading
{
/* ok */
[self.backgroundMOC performBlock:^{
assert(![NSThread isMainThread]);
}];
/* CRASH */
[self.backgroundMOC performBlockAndWait:^{
assert(![NSThread isMainThread]);
}];
}
Dlaczego dzwonienieperformBlockAndWait
wykonać zadanie w wątku głównym, a nie w wątku w tle?