许多CGContext无效上下文0x0错误iOS 8

时间:2014-10-25 22:38:40

标签: ios objective-c ios8 cgcontext

我的应用程序突然开始产生很多此类错误:

<Error>: CGContextSetInterpolationQuality: invalid context 0x0. This is a serious error. 
This application, or a library it uses, is using an invalid context  and is thereby contributing  
to an overall degradation of system stability and reliability. This notice is a courtesy: please  
fix this problem. It will become a fatal error in an upcoming update.

依此类推CGContextDrawImage,CGBitmapContextCreateImage等。

我显然做了一些严重的错误,但我不确定是什么。我正在使用下面的代码,我从其他人改编为我的应用程序。它基本上调整了图像的大小,考虑到了设备。

代码似乎工作正常,我的应用程序做了预期的但我不确定是什么导致错误看起来很严重。任何人都可以在我的代码中看到任何可能导致这些错误的明显内容吗?

-(UIImage *)resizeImage:(NSString *)imageName {

    UIImage *originalImage = [UIImage imageNamed:imageName];
    CGRect newRect = CGRectIntegral(CGRectMake(0, 0, originalImage.size.width * myScalingFactor, originalImage.size.height * myScalingFactor));
    CGImageRef imageRef = originalImage.CGImage;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    CGContextRef bitmap = CGBitmapContextCreate(
                                                NULL,
                                                newRect.size.width,
                                                newRect.size.height,
                                                8,
                                                (newRect.size.width * 4),
                                                colorSpace,
                                                kCGImageAlphaPremultipliedLast
                                                );

    CGColorSpaceRelease(colorSpace);
    CGContextSetInterpolationQuality(bitmap, 3);
    CGContextDrawImage(bitmap, newRect, imageRef);
    CGImageRef newImageRef = CGBitmapContextCreateImage(bitmap);
    UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
    CGContextRelease(bitmap);
    CGImageRelease(newImageRef);

    return newImage;
}

2 个答案:

答案 0 :(得分:12)

CGContextSetInterpolationQuality: invalid context 0x0.表示传递给context的{​​{1}}参数是空指针(因此内存地址为0x0)。

为避免这种情况,您应该检查CGContextSetInterpolationQuality是否返回CGBitmapContextCreate。如果您提供无效的宽度/高度(为零),则会发生这种情况。

答案 1 :(得分:-2)

修改。 2017年8月
这可能是无用的建议。我不是为了后代而删除它。我不记得这种情况发生了,所以它几乎没有价值。

这是我刚刚学会忽略的一个错误 即使iOS经常遇到这个错误,也很难认真对待。如果您将设备连接到Mac并查看调试控制台,您将看到Springboard也始终记录这些错误。在下面的屏幕截图中,我只是更改了屏幕亮度,这使设备控制台进入过载状态。 enter image description here

不幸的是,在调试这会使控制台变得混乱,但根据this线程,这是iOS的一个问题,可以忽略。

修改
我不确定为什么我会继续为此回应而投降。我引用了我的消息来源,其中显示Apple员工明确承认这是操作系统的问题。如果其他人觉得需要downvote,请告诉我哪里出错了。干杯如。enter image description here