Действительно ли NSURLConnection блокирует основной поток?

Я использую NSURLConnection в приложении для iPhone и интерфейсе, кажется, замедляется после отправки initWithRequest: к моему NSURLConnection экземпляр. Я не уверен, происходит ли это, потому что мой код обработки занимает много времени для обработки ответа, или если это потому что NSURLConnection блокирует основной поток.

Может любой подтверждать это NSURLConnection будет создавать соединение и ожидать данных по отдельному потоку и затем называть его методы делегата для основного потока?

Спасибо!

8
задан Lorenzo B 27 March 2012 в 16:08
поделиться

2 ответа

NSURLConnection поддерживает два режима работы: асинхронный и синхронный. Ни один из них вообще не использует отдельные потоки. Оба они используют только один поток, независимо от того, в каком потоке вы их запускаете.

В синхронном режиме NSURLConnection будет блокировать любой поток, в котором вы его запускаете. Асинхронный режим использует цикл выполнения, чтобы вести себя (с точки зрения разработчика) аналогично фоновый поток, но с меньшими накладными расходами и без каких-либо проблем с безопасностью потоков. Если вы используете асинхронный режим, вы хотите запустить его в основном потоке. Он ничего не заблокирует.

Если ваш интерфейс замедляется, это несовместимо с синхронным использованием NSURLConnection, которое вместо этого приведет к полной остановке вашего интерфейса до завершения запроса.

10
ответ дан 5 December 2019 в 18:55
поделиться

Если вы последуете примеру с яблоками на NSURLConnection, вызов будет обрабатываться в потоке, отличном от основного.

-1
ответ дан 5 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: