objetivo c renderInContext travar no encadeamento de segundo plano

Eu tenho um aplicativo em que a tela está continuamente capturando em thread de fundo. Aqui está o código

- (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;
}

Funciona bem para capturar uma ou duas vezes. Mas depois de um tempo o aplicativo trava sempre na mesma linha[[keyWindow layer] renderInContext:context]; e dáEXC_BAD_ACCESS (code=1, address=0x8) mensagem. Eu procurei em todos os lugares e nada de útil. Encontrei apenas que o renderInContext tem problema de vazamento de memória quando funciona em thread de segundo plano. Mas como você entende isso não resolve o meu problema :). Então tem 3 perguntas: -

Qual é o motivo deste acidente (problema)?

O que posso fazer com isso?

Existe alguma outra maneira de capturar a tela (ao lado do que a Apple sugere, porque lá o renderInContext também é usado). Algo sem render ...?

questionAnswers(2)

yourAnswerToTheQuestion