处置UIImage和CGImage

时间:2012-10-07 01:32:38

标签: memory-management xamarin.ios uiimage dispose cgimage

完成使用后,我是否需要在MonoTouch应用程序中处理UIImageCGImage?处置其中任何一个有什么影响?

如果图像仍然可见,是否可以安全地处理它们?

1 个答案:

答案 0 :(得分:3)

我建议使用using块来表示图像:

using (var image = UIImage.FromFile ("demo.png"))
{
    //do something with your image here
    //such as passing it to an UIImageView.Image
}

当对象离开该块时,它将自动处理。

或者,当您知道使用它时,可以在UIImage上调用Dispose()

如果您不处理它们并加载大量图像,最终会耗尽内存。使用UIImage.FromBundle()方法加载大图像是一个坏主意,因为它们被缓存,您无法控制缓存何时被丢弃。

如果您处置当前显示的UIImageUIImageView将不会发生任何不良情况,因为它会保留对图像的引用。因此,只处理C#管理的图像,但不一定是Cocoatouch图像。