3

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

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

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

4

4 回答 4

6

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

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

于 2014-12-18T21:38:57.583 回答
2

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

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

于 2012-06-14T18:38:43.380 回答
1

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

于 2011-03-28T17:00:59.410 回答
1

可以按如下方式设计一个非零但为零的情况anImagecgimage

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

正如之前的答案所表明的那样,在这种情况下,人们可以通过其他方式找到自己。

于 2011-03-28T17:06:24.913 回答