Только одна мысль, похоже, что вы загружаете все изображения из массива, прежде чем удалить свой прогресс HUD и отобразить галерею. Поскольку количество изображений может быть очень большим и предполагать, что вы используете представление коллекции или подобное, это довольно сложно, прежде чем что-либо отобразить.
Некоторое время назад я сделал что-то подобное, и вместо того, чтобы перебирать массив и загружать все сразу, я позволил клеткам запрашивать изображения по мере необходимости. Это делает его очень быстрым и эффективным, поскольку ячейки могут отображаться сразу со значком загрузки, а затем переходить к изображению, когда оно было доступно. Эффективность достигается только за счет загрузки изображений, которые пользователь фактически увидит.
Чтобы сделать вещи более производительными, и под производительностью я имею в виду, что я могу прокручивать так быстро, как мне нравится, без зависания экрана, каждая ячейка сначала проверяет кэш в памяти для изображения, а затем запускает запрос на изображение в фоновом потоке. ,
Когда изображение возвращалось, ячейка добавляла его в кэш-память, а затем, если ячейка не использовалась повторно для другого изображения (из-за быстрой прокрутки), оно отображало изображение.
Кроме того, я также использовал NSCache для кэша в памяти, чтобы, если приложение начало использовать много памяти, изображения автоматически отбрасывались и перезагружались в следующий раз, когда ячейка захотела один.
Суть в том, чтобы использовать кэш с поддержкой памяти и загружать только то, что вам действительно нужно.