Обработка множества файлов изображений в scrollview на iPhone аналогична приложению фотографий - PullRequest
1 голос
/ 22 августа 2010

Итак, я видел этот вопрос, заданный ранее, и на самом деле я задал его вчера вечером, но я подумал, что я хотел бы дать ему еще один шанс просто посмотреть, смогу ли я получить какие-либо другие уникальные взгляды на проблему.* Проблема - У меня есть приложение с большим количеством uiimageviews (с загрузкой изображения на диск) в scrollview, которое, конечно, имеет две большие проблемы: использование памяти и производительность.В моем приложении использование памяти не является большой проблемой, потому что я использую такие приемы, как снятие и повторное использование изображений и тому подобное.Но производительность - это совсем другое.Прямо сейчас, в качестве процедуры сохранения памяти, я храню только пути к файлам изображений в памяти, потому что было бы смешно хранить изображения в памяти.Но проблема в том, что чтение с диска занимает больше времени, чем из памяти, и замедляет прокрутку прокрутки безмерно .

Итак, какие методы кто-нибудь из вас предлагает для чего-то подобного?Я видел Three20, но не хочу его использовать, потому что мне нужна высокая настраиваемость в моем представлении, а это просто не сработает.Файлы изображений не являются большими, но имеют размер миниатюр, поэтому нет масштабирования или избыточного размера.Должен быть интуитивный способ справиться с этим.Встроенное приложение для работы с фотографиями прекрасно справляется с тысячами фотографий с низким объемом памяти и плавной прокруткой.

1 Ответ

1 голос
/ 22 августа 2010

По сути, проблема в том, что вы, вероятно, выполняете кучу дисковых операций ввода-вывода в потоке пользовательского интерфейса, что в основном гарантирует проблемы с производительностью.

Вам следует рассмотреть возможность загрузки изображений в фоновом потоке и обновления представлений изображений в главном потоке при загрузке изображений. В зависимости от вашего варианта использования вы можете получить более или менее умные сведения о том, как далеко вы предварительно загрузите и т. Д., Чтобы вы могли иметь готовые изображения. (Там может быть некоторый пригодный для использования исходный код или даже пример кода Apple, который делает что-то вроде этого, но я не знаю об этом из головы).

Вы можете заметить, что некоторые приложения (не уверенные в приложении «Фотографии») имеют промежуточный этап, на котором они загружают очень изображение малого пальца для всех изображений и масштабируют его до размера рендера, что действует как заполнитель до тех пор, пока не будет загружена полноразмерная версия - если пользователь прокручивает это изображение до загрузки полного размера, видимый эффект почти такой же, как если бы изображение было там все время.

...