Я использую NSURLConnection
в приложении для iPhone и интерфейсе, кажется, замедляется после отправки initWithRequest:
к моему NSURLConnection
экземпляр. Я не уверен, происходит ли это, потому что мой код обработки занимает много времени для обработки ответа, или если это потому что NSURLConnection
блокирует основной поток.
Может любой подтверждать это NSURLConnection
будет создавать соединение и ожидать данных по отдельному потоку и затем называть его методы делегата для основного потока?
Спасибо!
NSURLConnection поддерживает два режима работы: асинхронный и синхронный. Ни один из них вообще не использует отдельные потоки. Оба они используют только один поток, независимо от того, в каком потоке вы их запускаете.
В синхронном режиме NSURLConnection будет блокировать любой поток, в котором вы его запускаете. Асинхронный режим использует цикл выполнения, чтобы вести себя (с точки зрения разработчика) аналогично фоновый поток, но с меньшими накладными расходами и без каких-либо проблем с безопасностью потоков. Если вы используете асинхронный режим, вы хотите запустить его в основном потоке. Он ничего не заблокирует.
Если ваш интерфейс замедляется, это несовместимо с синхронным использованием NSURLConnection, которое вместо этого приведет к полной остановке вашего интерфейса до завершения запроса.
Если вы последуете примеру с яблоками на NSURLConnection, вызов будет обрабатываться в потоке, отличном от основного.