Параллелизм базовых данных `executeBlockAndWait:` NSManagedObjectContext zombie

У меня есть следующий отчет о сбое из моего выпущенного приложения:

synchronizeMyWords Метод выбирает объекты из базы данных, создает частный контекст очереди с основным контекстом parent и, наконец, сохраняет результаты. Все операции находятся в фоновом потоке. Этот метод вызывается каждый раз, когда приложение входит вbackground а такжеforeground, Вот упрощенный метод:

- (AWSTask *)synchronizeMyWords {
  __weak typeof(self) weakSelf = self;

  AWSContinuationBlock block = ^id _Nullable(AWSTask * _Nonnull task) {
    if ([task.result isKindOfClass:[NSArray class]]) {
      NSArray * records = (NSArray *)task.result;
      NSManagedObjectContext * context = [NSManagedObjectContext MR_contextWithParent:[NSManagedObjectContext MR_defaultContext]];
      [context performBlockAndWait:^{
        for (NSDictionary * info in records) {
            [RDRWord MR_createEntityInContext:context];
        }

        [context save:nil];
      }];
      return [AWSTask taskWithResult:@YES];
    }
    return [AWSTask taskWithError:[NSError errorWithDomain:@"" code:404 userInfo:nil]];
  };

  AWSExecutor * executor = [AWSExecutor defaultExecutor];


  return [[self loadLocalWords] continueWithExecutor:executor withBlock:block];
}

Как видите, я используюВолшебная запись Сторонняя библиотека для управления стеком Core Data. Вот метод создания частного контекста очереди:

+ (NSManagedObjectContext *) MR_contextWithParent:(NSManagedObjectContext *)parentContext
{
    NSManagedObjectContext *context = [self MR_newPrivateQueueContext];
    [context setParentContext:parentContext];
    [context MR_obtainPermanentIDsBeforeSaving];
    return context;
}

Вы можете проверить всеNSManagedObjectContext+MagicalRecord категория на GitHubВот.

Как это доступно, чтоcontext объект внутриperformBlockAndWait: выпущен, прежде чем он выходит за рамки? Я лично не могу воспроизвести сбой, но эта проблема затрагивает многих моих пользователей (устройства с iOS 8.1 - 10).

ОБНОВЛЕНИЕ 1:

Вот например тот же отчётблог

Ответы на вопрос(2)

Ваш ответ на вопрос