Использует ли iOS какой-то механизм для кэширования / восстановления объектов UIImageView? - PullRequest
1 голос
/ 03 августа 2011

Я использую много маленьких изображений, которые помещаются в объекты UIImageView. В настоящее время я пытаюсь предвидеть проблемы, которые могут возникнуть позже, такие как предупреждения памяти, работа в фоновом режиме и т. Д. Мое приложение довольно маленькое - менее 10 Мб, но все же я немного обеспокоен. Причина в том, что я не уверен, как мое приложение справится с ситуацией, когда на экран загружается много UIImageViews, затем приложение переходит в фоновый режим, а затем через долгое время возвращается. Нужно ли перезагрузить все экранные UIImageViews?

Я читал, что iOS справится с данными UIKit (например, с изображениями), когда станет фоном. И что мне не нужно беспокоиться о восстановлении этого, хотя. Было бы хорошо, если бы мои объекты UIImageView использовали файлы изображений PNG непосредственно из каталога приложения. Но дело в том, что я использую таблицы спрайтов (файлы с несколькими изображениями, упакованными внутри), затем извлекаю эти изображения с помощью CGImageCreateWithImageInRect, а затем в какой-то момент времени передаю их в UIImageView. Теперь я задаю себе вопрос: будет ли iOS кэшировать мои экранные объекты UIImageView, или мне придется вручную перезагрузить эти UIImageViews, когда приложение станет активным? Я понимаю, что если много приложений будут работать в фоновом режиме, моё фоновое приложение может быть убито. Но меня беспокоит ситуация, когда мое приложение будет еще живым (в фоновом режиме), но с выпущенными объектами UIImageView ... Пожалуйста, поделитесь своими знаниями и знаниями :)

1 Ответ

0 голосов
/ 07 августа 2011

Текущая реализация «фоновых» приложений делает полный снимок памяти вашего приложения.Такой подход гарантирует, что приложение будет восстановлено после полного уничтожения из памяти в неизменном состоянии.Это означает, что вам не нужно делать никаких дополнительных манипуляций, таких как сохранение изображений, сгенерированных кодом, и т. Д. Для поддержки восстановления приложения.UIImageView не будет выгружен автоматически, если вы не будете реализовывать логику очистки внутри экземпляра applicationDidReceiveMemoryWarning для экземпляра UIApplicationDelegate.Однако логика автоматической очистки, реализованная для кэшированных UIImages, загруженных методом imageNamed.

...