CALayer renderInContext:导致未知崩溃

时间:2012-03-11 03:49:28

标签: ios iphone calayer quartz-core

整个代码块包含以下内容:

    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没有任何结果。我在AppDelegate.h中导入了Quartzcore,如果它与它有任何关系。该应用程序在模拟器中运行良好,但在真实设备上运行时崩溃。

2 个答案:

答案 0 :(得分:3)

@Greg:在设备上看起来像是内存溢出问题,因为设备是内存受限的,而模拟器运行时使用不同的内存配置,我遇到了同样的问题 - 这可能发生在长网页上,任何想法如何解决? / p>

在崩溃之前,任何人的最大宽度和高度[CALayer renderInContext]可以处理实际设备(iphone视网膜或非视网膜)吗?

答案 1 :(得分:0)

尝试

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

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();