Memory management 处理UIImage和CGImage
使用完MonoTouch应用程序中的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 } 当对
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
功能。