Трябва ли да изхвърлям UIImage
s и CGImage
s в приложението MonoTouch, след като свърша работата с тях? Какви са ефектите от изхвърлянето на който и да е от тях?
Безопасно ли е да изхвърлите някой от тях, ако изображението все още се вижда?
Трябва ли да изхвърлям UIImage
s и CGImage
s в приложението MonoTouch, след като свърша работата с тях? Какви са ефектите от изхвърлянето на който и да е от тях?
Безопасно ли е да изхвърлите някой от тях, ако изображението все още се вижда?
Предлагам да използвате блок using
за такива изображения:
using (var image = UIImage.FromFile ("demo.png"))
{
//do something with your image here
//such as passing it to an UIImageView.Image
}
Когато обектът напусне този блок, той ще бъде изхвърлен автоматично.
Като алтернатива можете да извикате Dispose()
на UIImage, когато знаете, че сте готови да го използвате.
Ако не ги изхвърлите и заредите много изображения, в крайна сметка ще останете без памет. Зареждането на големи изображения с метода UIImage.FromBundle()
е лоша идея, тъй като те са кеширани и нямате контрол върху това кога се изхвърля кешът.
Ако изхвърлите UIImage
, което в момента е показано, нищо лошо няма да се случи с UIImageView
, тъй като той запазва собствена препратка към изображението. Така че само C# управляваното изображение се изхвърля, но не непременно изображението Cocoatouch.
Dispose
в MonoTouch.
- person Dan Abramov; 08.10.2012