2010-02-06 7 views
0

Я пытаюсь загрузить тысячи изображений с помощью NSThread, но производительность довольно медленная.iPhone: лучшая практика для использования NSThread для загрузки тысяч изображений?

Что было бы лучше всего использовать NSThread для загрузки тысяч изображений?

Спасибо,
Джим.

+2

NSThread не делает ничего более медленным сам по себе. Вы использовали Shark или Instruments, чтобы найти, где ваше приложение проводит циклы процессора? – Costique

+0

Зависит от вашей цели - это важно, когда загружаются все 1000 изображений или вы можете выяснить, какие изображения вам нужны в первую очередь и показать что-то полезное, пока другие 997 загружаются? –

+0

David, я попробовал способ, упомянутый вами. Я загружаю некоторые изображения, которые широко используются после успешного запуска приложения. Я вижу, что производительность моего приложения определенно возрастает. Большое спасибо. – Jim

ответ

3

NSThread - не проблема. Похоже, вы можете просто подавить аппаратное обеспечение iPhone. Помните, что мобильная платформа имеет лишь небольшую мощность даже самого медленного ноутбука.

Посмотрите, как фото приложение должно смазанности замирание в изображениях в разы. Иногда это нужно делать и с эскизами. Для отображения графически насыщенной веб-страницы может потребоваться до 10-20 секунд.

Похоже, вам нужно переосмыслить свой дизайн. Если вы не загружаете микроскопически маленькие изображения, вы просто не загружаете «тысячи» из них своевременно на аппаратное обеспечение iPhone. Вы должны загрузиться при отображении. Логически разбивайте изображения на группы, а затем переходите к группе, которую они хотят, а затем загружают только эту небольшую группу.

+0

Да, это правда, что NSThread не проблема. Я еще раз подумал о дизайне и теперь с новым дизайном выглядит хорошо. Большое спасибо. – Jim

1

При загрузке изображений через HTTP Я рекомендую использовать ASIHTTPRequest framwork. Он может легко загружать html, изображения и другие вещи асинхронными.

Но будьте осторожны, чтобы не загружать многие вещи одновременно. Я прочитал где-то, что 10 http-соединений в то же время должны быть хорошей суммой. (Где-то был проект AppSales-Mobile ReviewUpdater.h значение, установленное jonkean в его commit)

3

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

Чтобы набрать бонусные очки, с помощью API достижимости, чтобы увидеть, если пользователь находится в сети 3G или Wi-Fi и установить количество одновременных загрузок, основанных на этом.

Смежные вопросы