Асинхронная загрузка изображений - PullRequest
1 голос
/ 19 июля 2011

Я разрабатываю приложение для iPad, аналогичное встроенному приложению Photos. Я использовал NSThread detachNewThreadSelector для загрузки изображения и сумел сократить время загрузки с 12 до 6 с, все еще не так, как я ожидал. Я подозреваю, что, скажем, в папке 20 изображений, создано 20 потоков для загрузки изображений. Теперь я думаю об ограничении до 5 потоков одновременно, и следующая группа потоков должна начинаться только после загрузки предыдущих 5 изображений. Может кто-нибудь просветить меня, как это сделать? Большое спасибо!

Ответы [ 2 ]

3 голосов
/ 19 июля 2011

Это звучит как идеальное задание для NSOperationQueue .

Сначала вы создаете и настраиваете NSOperationQueue и сохраняете его в переменной ivar или глобальной переменной. Затем вместо использования detachNewThreadSelector:toTarget:withObject: создайте NSInvocationOperation с тем же селектором, целью и объектом и добавьте его в очередь. Очередь будет обрабатывать запуск операций в пуле фоновых потоков, когда потоки станут доступными.

3 голосов
/ 19 июля 2011

Я не буду длинным: вы должны окончательно взглянуть на этот пример от Apple . Вы увидите свет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...