Вызовы методов делегата планируются в цикле выполнения потока, который инициировал соединение. Так что это не обязательно основной поток. Вы можете сделать это из любой темы. Но у вас должен быть цикл выполнения, который выполняется достаточно долго для обработки этих сообщений делегата.
И по умолчанию цикл выполнения должен работать в режиме по умолчанию, чтобы эти методы делегата запускались. Вот почему, например, по умолчанию, если вы запускаете асинхронное соединение из основного потока, ваши методы делегата не будут срабатывать, пока пользователь прокручивает представление таблицы или что-то в этом роде.
Но вы можете изменить это, запланировав обратные вызовы делегатов на любой другой цикл выполнения, который вы хотите, и / или любой режим цикла выполнения, который вы хотите использовать - [NSURLConnection scheduleInRunLoop: forMode:]
Надеюсь, ты об этом спрашивал?