CALayer renderInContext: вызывает неизвестное падение - PullRequest
6 голосов
/ 11 марта 2012

Весь блок кода состоит из следующего:

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

но после тестирования эта строка вызывает проблему:

    [webview.layer renderInContext:UIGraphicsGetCurrentContext()];

Приложение завершает работу без причины, указанной в консоли, и использование @try @catch @finally ничего не дает. Я импортировал Quartzcore в AppDelegate.h, если это как-то связано с этим. Приложение отлично работает в симуляторе, но вылетает при запуске на реальном устройстве.

Ответы [ 2 ]

3 голосов
/ 14 марта 2012

@ Грег: похоже на проблему переполнения памяти на устройстве, поскольку устройство ограничено в памяти, в то время как симулятор работает с другой конфигурацией памяти, я сталкиваюсь с тем же - это может случиться для длинных веб-страниц, есть идеи, как решить эту проблему?1001 *

Может ли кто-нибудь, кто имеет максимальную ширину и высоту [CALayer renderInContext], справиться с фактическим устройством (сетчаткой iphone или без сетчатки) до его сбоя?

0 голосов
/ 02 января 2014

попробуй

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

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
...