Привет, Newbee (без фан-намерения)
Ситуация, которую вы описываете, звучит как кандидат на NSOperation
и NSOperationQueue
Вы можете просто «загрузить» все из этих методов и заставить их выяснить, как лучше
чтобы получить картину. Если вы продолжаете создавать новые потоки, то в какой-то момент вы теряете преимущества многопоточности, т. Е. Накладные расходы растут для каждого потока, а процессорного времени остается слишком много.
Начните с сортировки списка URL-адресов для изображений так, чтобы самые дальние от пользователя (в смысле scrollView) загружались в последнюю очередь, затем начинайте добавлять операцию загрузки в NSOperationQueue и затем запускать операцию. Эти классы затем уравновесят ситуацию и сэкономят вам кучу кода на логику, чтобы иметь дело со сценариями, которые могут возникнуть.
Я нашел это полезным несколько недель назад:
Руководство по эксплуатации NSO
Маркус Зарра излагает хороший простой пример, с чего можно начать.
РЕДАКТИРОВАТЬ: К сожалению ... и ответить на ваш вопрос :), если это не приводит к обновлению ваших фотографий, то вам может потребоваться отправить специальное сообщение "обновление", когда операция будет завершена.
Если это большая часть вашего приложения, я бы порекомендовал вам создать PictureObject и переместить в него функциональность. Таким образом, при добавлении PictureObject вы создаете его экземпляр с помощью URL-адреса, и он отображает фиктивную картинку в качестве своего вида. Когда вы передаете этот PictureObject вашему NSOperation, который получает его URL, загружает изображение и устанавливает его в PictureObject.
Таким образом, он полностью асинхронен, и вам не нужно иметь дело с циклами или проверкой загрузки изображения и т. Д. И т. Д.
Надеюсь, это имеет смысл.