Если вы имеете в виду «NSURLConnection выполняется в главном потоке?», То да, я думаю, что это так. Соединение открывается, и методы делегата выполняются в главном потоке. Я не нашел никакой документации, которая могла бы предложить другое, и вы можете проверить это, отладив.
Я думаю, что ваше предположение, что прокрутка UITableView блокирует обратные вызовы NSURLConnection в главном цикле выполнения, верна.
Вы уже опубликовали одно решение, порождая тему для вашего селектора. Другой альтернативой может быть загрузка ваших файлов в виде NSOperations, что имеет несколько преимуществ:
- Если вы заставляете операции выполняться одновременно (см. Отличный пост Дэйва Дрибина на этом ), вы можете ограничить количество одновременных загрузок, что может быть желательно, если у вас очень большое количество изображений в твой стол. Вы говорите, что ваши загрузки происходят «почти мгновенно», но это может быть не так, если у вашего пользователя медленное соединение и ваша таблица содержит много изображений.
- Вы можете отменить все операции, если пользователь делает что-то, что делает загрузку изображения неактуальной, например, выполняет другой поиск.
Подход Дейва Дрибина, который я использую, заставляет соединения выполняться обратно в главном потоке, но это, вероятно, не является необходимым для ваших целей - вы могли бы использовать свой текущий подход для обратного вызова основного потока после ваших изображений скачать.