цель c renderInContext сбой в фоновом потоке

У меня есть приложение, в котором экран непрерывно захватывает в фоновом потоке. Вот код

- (UIImage *) captureScreen {

    UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
    CGRect rect = [keyWindow bounds];
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [[keyWindow layer] renderInContext:context];
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    UIDeviceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
    if ((orientation == UIInterfaceOrientationLandscapeLeft) || (orientation == UIInterfaceOrientationLandscapeRight) || (orientation==UIInterfaceOrientationPortraitUpsideDown)) {
        img=[self rotatedImage:img];
    }
    return img;
}

Это работает хорошо для захвата один или два раза. Но через некоторое время приложение вылетает всегда на одной линии[[keyWindow layer] renderInContext:context]; и это даетEXC_BAD_ACCESS (code=1, address=0x8) сообщение. Я искал везде и ничего полезного. Обнаружено только то, что renderInContext имеет проблему утечки памяти, когда он работает в фоновом потоке. Но, как вы понимаете, это не решает мою проблему :). Итак, есть 3 вопроса: -

В чем причина этого сбоя (проблемы)?

Что я могу сделать с этим?

Есть ли другой способ захвата экрана (кроме того, который предлагает Apple, потому что там также используется renderInContext). Что-то без рендеринга ...?

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

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