Нужно ли удалять UIImage
и CGImage
в приложении MonoTouch после того, как я закончу с ними работать? Каковы последствия удаления любого из них?
Безопасно ли избавляться от любого из них, если изображение все еще видно?
Нужно ли удалять UIImage
и CGImage
в приложении 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