Objetivo c renderInContext crash en hilo de fondo

Tengo una aplicación en la que la pantalla se captura continuamente en el hilo de fondo. Aquí está el 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 bien para capturar una o dos veces. Pero después de un tiempo la aplicación se bloquea siempre en la misma línea.[[keyWindow layer] renderInContext:context]; y daEXC_BAD_ACCESS (code=1, address=0x8) mensaje. Busqué por todas partes y nada útil. Se encontró solo que renderInContext tiene un problema de pérdida de memoria cuando funciona en un hilo de fondo. Pero como entiendes eso no resuelve mi problema :). Entonces tengo 3 preguntas: -

¿Cuál es la razón de este accidente (problema)?

¿Qué puedo hacer con esto?

¿Hay alguna otra forma de capturar la pantalla (además de la que Apple sugiere, porque también se usa renderInContext)? ¿Algo sin renderizar ...?