CALayer renderInContext:导致未知崩溃



整个代码块由以下部分组成:

    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@最终一无所获。我在AppDelegate.h中导入了Quartzcore,如果这与它有关的话。该应用程序在模拟器中运行良好,但在真实设备上运行时会崩溃。

@Greg:这似乎是设备上的内存溢出问题,因为当模拟器使用不同的内存配置运行时,设备受到内存限制,我遇到了同样的问题-这可能发生在长网页上,有什么办法解决吗?

在崩溃之前,有人能在实际设备(iphone视网膜或非视网膜)上处理最大宽度和高度[CLAYER renderInContext]吗?

尝试

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

最新更新