UIImageView
автоматически высвобождает ресурсы изображения, когда оно не отображается?И, может быть, когда приложение получит предупреждение о памяти?
Если нет, я подумываю написать подкласс (например, SmartReleaseImageView
), который будет использоваться в определенных ситуациях, когда это будет полезно.Я думал о поведении по следующим направлениям:
- Когда
SmartReleaseImageView
получает сообщение setImage
, оно регистрируется в диспетчере, например SmartReleaseImageViewManager
. - Когда приложение получает памятьпредупреждение
SmartReleaseImageViewManager
перебирает все его SmartReleaseImageViews
и проверяет, не добавлены ли какие-либо из них в суперпредставление, или проверяет, есть ли у любого из них кадр, который отбракован из-за того, что он находится за пределами основного окна. - Когда
SmartReleaseImageView
обнаруживает, что он появился и был выпущен, он загружает изображение снова.Поэтому, возможно, в первую очередь необходимо иметь такой метод, как setImageURL
, а не setImage
.
Этот тип поведения уже встроен в UIImageView
?Или он существует в сторонней версии где-нибудь?Или есть проблема с идеей?
(я пишу тяжелое приложение UIImageView, и было бы неплохо иметь глобальное всеобъемлющее решение, которое помогло бы с ситуацией с памятью, а не добавляло многодополнительного кода к моему UIViewControllers
.)
РЕДАКТИРОВАТЬ : Ответы на данный момент предполагают, что UIViewController
должен нести ответственность.Это правда, и я думаю, что мой конкретный случай нетипичен.В моем случае UIViewController может содержать множество пользовательских представлений (со своей собственной иерархией), которые не обязательно знают структуру и которые часто входят и выходят из вида.Поэтому ему трудно знать, когда высвобождать свои ресурсы.Но да, возможно, я должен найти способ решить эту проблему сам ...