2012-03-11 11 views
6

El bloque entero de código consta de los siguientes:CALayer renderInContext: causando accidente desconocido

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

pero después de la prueba, esta línea es el que causa el problema:

[webview.layer renderInContext:UIGraphicsGetCurrentContext()]; 

la aplicación se bloquea con no hay ninguna razón en la consola, y al usar @try @catch @finally no aparece nada. Importé Quartzcore en AppDelegate.h, si eso tiene algo que ver con eso. La aplicación funciona bien en el simulador, pero se bloquea cuando se ejecuta en un dispositivo real.

+1

bloquea con qué? ¿La consola imprime algo? ¿Es EXC_BAD_ACCESS, o SIGABRT, o NSExceptionThrow? – CodaFi

+0

la consola no imprime nada, y nada aparece en Xcode. Estoy completamente confundido sobre lo que está sucediendo, así que me preguntaba si estaba haciendo algo mal. – Greg

+0

Tengo exactamente el mismo problema – niklassaers

Respuesta

3

@Greg: parece un problema de desbordamiento de memoria en el dispositivo ya que el dispositivo tiene memoria limitada mientras el simulador se ejecuta con una configuración de memoria diferente, me encuentro con el mismo - esto puede ocurrir para páginas web largas, ¿alguna idea de cómo resolverlo?

¿Alguien de lo que es ancho y alto máximo [CALayer renderInContext] puede manejar en un dispositivo real (retina iphone o no retina) antes de que se cuelgue?

+0

Yo también tengo un problema, pero este problema solo viene en modo horizontal, – Sabareesh

+0

¿Cómo es posible? es la respuesta aceptada? –

0

tratar

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

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
Cuestiones relacionadas