- [UIImage CGImage]返回零

时间:2011-02-24 13:43:57

标签: iphone uikit uiimage core-graphics cgimage

我想知道在第二个断言中这个代码在哪些情况下会中断。换句话说,什么时候可以-[UIImage CGImage]返回nil?文档在这里不是很有说服力。

- (void)setImage:(UIImage *)anImage {
    assert(anImage);
    CGImageRef cgimage = anImage.CGImage;
    assert(cgimage);
}

我很确定,UIImage是正确的,因为它是从应用程序包中提取的。到目前为止,我还没有重现案例,但我确实看到了一些用户崩溃报告。

4 个答案:

答案 0 :(得分:5)

我在文档中遇到的另一种可能性是:

  

如果使用CIImage对象初始化UIImage对象,则该属性的值为NULL。

答案 1 :(得分:2)

另一种可能性是你有多个线程同时访问同一个UIImage对象;这种情况发生在我的代码中,症状相同。

这也可以解释您的零星崩溃报告,因为访问模式将取决于从运行到运行的更改时间。

答案 2 :(得分:1)

据我所知,如果第一个断言通过(显示anImage不是nil),则意味着它无法加载图像。检查以确保将图像复制到捆绑包中。

答案 3 :(得分:1)

anImage为非零而cgimage为零的情况可以设计如下:

UIImage* myImage = [[UIImage alloc] initWithCGImage:nil];

正如先前的答案所表明的那样,在这种情况下还有其他方法可以找到自己。