开发者

-[UIImage CGImage] returning nil

开发者 https://www.devze.com 2023-02-13 08:45 出处:网络
I\'m wondering under which circumstances this code breaks in the second assert. In other words, when can -[UIImage CGImage] return nil? The documentation isn\'t very telling here.

I'm wondering under which circumstances this code breaks in the second assert. In other words, when can -[UIImage CGImage] return nil? The documentation isn't very telling here.

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

I'm pretty sure, the开发者_如何学JAVA UIImage is correct since it's fetched from the app bundle. So far I haven't been able to reproduce the case but I do see some user crash reports.


One more possibility that I've come across in the docs:

If the UIImage object was initialized using a CIImage object, the value of the property is NULL.


Another possibility is that you have multiple threads accessing the same UIImage object at the same time; this was happening in my code with the same symptom.

That might explain your sporadic crash reports, too, since the access patterns would depend on timing that changes from run to run.


To the best of my knowledge, if the first assert passes(showing that anImage is not nil) it means that it could not load the image. Check to make sure that the image is being copied into your bundle.


A case where anImage would be non-nil but cgimage would be nil could be contrived as follows:

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

As previous answers have indicated there are other ways one could find themselves in such a scenario.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号