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?

questionAnswers(4)

yourAnswerToTheQuestion