2012-03-11 13 views
6

Cały blok kodu składa się z następujących elementów:CALayer renderInContext: powodując nieznana katastrofie

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

ale po testach, ta linia jest jedną przyczyną problemu:

[webview.layer renderInContext:UIGraphicsGetCurrentContext()]; 

awarii aplikacji z nie ma powodu wymienionego na konsoli, a użycie @try @catch @finally nie daje nic. Zaimportowałem Quartzcore do AppDelegate.h, jeśli ma to coś wspólnego. Aplikacja działa dobrze w symulatorze, ale ulega awarii po uruchomieniu na prawdziwym urządzeniu.

+1

wywala się z czego? Czy konsola drukuje coś? Czy to EXC_BAD_ACCESS, SIGABRT, czy NSExceptionThrow? – CodaFi

+0

konsola niczego nie drukuje, a nic nie pojawia się w Xcode. Jestem po prostu całkowicie zdezorientowany tym, co się dzieje, więc zastanawiałem się, czy robię coś złego. – Greg

+0

Mam dokładnie ten sam problem – niklassaers

Odpowiedz

3

@Greg: Wydaje się, że na urządzeniu występuje problem z przepełnieniem pamięci, ponieważ urządzenie ma ograniczoną pamięć, podczas gdy symulator działa z inną konfiguracją pamięci, uruchamiam to samo - może się tak zdarzyć w przypadku długich stron internetowych, wszelkich pomysłów na rozwiązanie tego problemu?

czy ktoś, co jest maksymalna szerokość i wysokość [CALayer renderInContext] może obsługiwać na rzeczywistych urządzeń (iphone retina lub nie-siatkówka), zanim się zawiesza?

+0

Ja też mam pewien problem, ale ten problem nadchodzi tylko w trybie poziomym, – Sabareesh

+0

Jak to się stało to jest zaakceptowana odpowiedź? –

0

spróbować

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

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();