从文件创建的CGImage可以为空吗
Posted
技术标签:
【中文标题】从文件创建的CGImage可以为空吗【英文标题】:Can CGImage created from file be null 【发布时间】:2016-08-18 07:33:27 【问题描述】:如果 UIImage
是从文件或包创建的,image.CGImage
是否可以返回 null
?
UIImage image = UIImage.FromFile(name);
// or
UIImage image = UIImage.FromBundle(name);
// image.CGImage == null?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于从文件创建的CGImage可以为空吗的主要内容,如果未能解决你的问题,请参考以下文章