6 Stimmen

CALayer renderInContext: verursacht unbekannten Absturz

Der gesamte Codeblock besteht aus folgendem:

    CGSize layerSize = [webview sizeThatFits:CGSizeZero];

    if ([UIScreen instancesRespondToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0f) {
        UIGraphicsBeginImageContextWithOptions(layerSize, NO, 2.0f);
    } 
    else {
          UIGraphicsBeginImageContext(layerSize);
    }

    [webview.layer renderInContext:UIGraphicsGetCurrentContext()];

    screenshot = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

aber nach dem Testen ist diese Zeile diejenige, die das Problem verursacht:

    [webview.layer renderInContext:UIGraphicsGetCurrentContext()];

Die Anwendung stürzt ab, ohne dass ein Grund in der Konsole angegeben wird, und die Verwendung von @try @catch @finally führt zu nichts. Ich habe Quartzcore in AppDelegate.h importiert, falls das etwas damit zu tun hat. Die App funktioniert gut im Simulator, stürzt aber ab, wenn sie auf einem echten Gerät ausgeführt wird.

3voto

akishnani Punkte 86

@Greg: scheint ein Speicherüberlaufproblem auf dem Gerät zu sein, da das Gerät speicherbegrenzt ist, während der Simulator mit einer anderen Speicherkonfiguration läuft, ich habe das gleiche Problem - dies kann bei langen Webseiten passieren, irgendwelche Ideen, wie man es lösen kann?

tut jemand, was ist maximale Breite und Höhe [CALayer renderInContext] kann auf tatsächlichen Gerät (iphone Retina oder nicht-Retina) verarbeiten, bevor es abstürzt?

0voto

Madhur Sodhi Punkte 121

Pruebe

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X