Ziel c renderInContext stürzt im Hintergrund-Thread ab

Ich habe eine App, in der der Bildschirm kontinuierlich im Hintergrund-Thread aufzeichnet. Hier ist der Code

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

Es eignet sich gut für ein- oder zweimaliges Aufnehmen. Aber nach einer Weile stürzt die App immer auf der gleichen Leitung ab[[keyWindow layer] renderInContext:context]; und es gibtEXC_BAD_ACCESS (code=1, address=0x8) Botschaft. Ich habe überall gesucht und nichts brauchbares. Es wurde nur festgestellt, dass bei renderInContext ein Speicherverlust auftritt, wenn es im Hintergrundthread funktioniert. Aber wie Sie verstehen, löst das mein Problem nicht :). Also habe 3 Fragen: -

Was ist der Grund für diesen Absturz (Problem)?

Was kann ich damit machen?

Gibt es eine andere Möglichkeit zum Erfassen des Bildschirms (neben der von Apple vorgeschlagenen, da dort auch renderInContext verwendet wird)? Etwas ohne Rendering ...?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage