obiektyw c renderInContext zawiesza się w wątku w tle

Mam aplikację, w której ekran ciągle przechwytuje w tle wątku. Oto kod

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

Działa dobrze do przechwytywania raz lub dwa razy. Ale po chwili aplikacja zawiesza się zawsze w tej samej linii[[keyWindow layer] renderInContext:context]; i to dajeEXC_BAD_ACCESS (code=1, address=0x8) wiadomość. Szukałem wszędzie i nic użytecznego. Znaleziono tylko, że renderInContext ma problem z wyciekiem pamięci, gdy działa w wątku w tle. Ale jak rozumiesz, to nie rozwiązuje mojego problemu :). Tak więc mam 3 pytania: -

Jaka jest przyczyna tej awarii (problemu)?

Co mogę z tym zrobić?

Czy istnieje inny sposób przechwytywania ekranu (poza tym, który sugeruje Apple, ponieważ używany jest także renderInContext). Coś bez renderowania ...?

questionAnswers(2)

yourAnswerToTheQuestion