【问题标题】:Can CGImage created from file be null从文件创建的CGImage可以为空吗
【发布时间】:2016-08-18 07:33:27
【问题描述】:
如果 UIImage 是从文件或包创建的,image.CGImage 是否可以返回 null?
UIImage image = UIImage.FromFile(name);
// or
UIImage image = UIImage.FromBundle(name);
// image.CGImage == null?
【问题讨论】:
标签:
ios
xamarin.ios
uiimage
cgimage
【解决方案1】:
一般来说,如果UIImage 不是null,那么CGImage 也将不是null。在少数情况下,情况并非如此 (explained in this answer),但这不适用于您正在使用的方法。
如果找不到指定的图像,UIImage 本身可以是null(因此UIImage.CGImage 也将是null) - 正如您从文档中看到的那样,返回将是nil (null 在 C# 中)。这适用于这两种方法。
FromBundle 绑定到 imageNamed: - docs here
FromFile 绑定到 imageWithContentsOfFile: - docs here
【解决方案2】:
感谢@BytesGuy 的帮助。正如他所说,UIImage.FromFile 和 UIImage.FromBundle 不能返回 UIImage 和 null CGImage。
对他的回答进行一些更正:
UIImage 本身可以是null(因此UIImage.CGImage 也可以是null)
这不是真的,如果UIImage 是null,UIImage.CGImage 将抛出NullReferenceException(不会返回null)。
同样在 Xamarin.iOS 中,如果 UIImage 已被处置,则可以获取 null CGImage:
UIImage image = UIImage.FromFile(name);
image.Dispose();
// now image.CGImage is null