Memory management 处理UIImage和CGImage

Memory management 处理UIImage和CGImage,memory-management,xamarin.ios,uiimage,dispose,cgimage,Memory Management,Xamarin.ios,Uiimage,Dispose,Cgimage,使用完MonoTouch应用程序中的UIImages和CGImages后,是否需要对它们进行处理?处置其中任何一个都会产生什么影响 如果图像仍然可见,处理其中任何一个是否安全?我建议使用使用块处理以下图像: using (var image = UIImage.FromFile ("demo.png")) { //do something with your image here //such as passing it to an UIImageView.Image } 当对

使用完MonoTouch应用程序中的
UIImage
s和
CGImage
s后,是否需要对它们进行处理?处置其中任何一个都会产生什么影响


如果图像仍然可见,处理其中任何一个是否安全?

我建议使用
使用
块处理以下图像:

using (var image = UIImage.FromFile ("demo.png"))
{
    //do something with your image here
    //such as passing it to an UIImageView.Image
}
当对象离开该块时,它将被自动处理

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

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


如果您处理当前显示的
UIImage
,则
UIImageView
不会发生任何不好的情况,因为它保留自己对图像的引用。因此,只处理C#managed映像,而不一定处理Cocoatouch映像

我建议使用
块来处理这样的图像:

using (var image = UIImage.FromFile ("demo.png"))
{
    //do something with your image here
    //such as passing it to an UIImageView.Image
}
当对象离开该块时,它将被自动处理

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

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


如果您处理当前显示的
UIImage
,则
UIImageView
不会发生任何不好的情况,因为它保留自己对图像的引用。因此,只处理C#managed映像,而不一定处理Cocoatouch映像

除了您的回答,我发现有助于查找本机泄漏,以及扩展MonoTouch中的
Dispose
功能。除了您的回答,我发现有助于查找本机泄漏,以及扩展MonoTouch中的
Dispose
功能。