Существует несколько подходов к многопоточности в Objective-C! Самая простая стратегия - NSOperationQueue. Переопределите NSOperation для обработки вашего HTTP-запроса, при необходимости установите блок завершения, если вам нужно получать уведомление, когда он будет сделан, добавьте его экземпляр в объект NSOperationQueue, и все готово. Настройте NSTimer, чтобы перепланировать загрузку, если она не удалась в первый раз. Вы можете использовать NSURLConnection для обработки веб-контента. Обратите внимание, что NSURLConnection может устанавливать соединения асинхронно или блокировать. Поскольку ваш подкласс NSOperation уже работает в отдельном потоке, вы, вероятно, захотите использовать метод блокировки (если вам не нужно создавать параллельный подкласс NSOperation, что требует гораздо больших усилий).
Вы также можете использовать API Grand Central Dispatch, отсоединить новый поток от указанных вами методов или использовать обычный старый c (я бы не рекомендовал последние два, но было бы хорошо упомянуть их). В качестве бонуса NSOperationQueue и Grand Central Dispatch знают «что правильно», если у вас одновременно запущено несколько операций, и масштабируют количество потоков, чтобы соответствовать количеству ядер на компьютере пользователя, чтобы получить наилучшую производительность.
Проверьте документы для NSOperationQueue, NSOperation и NSURLConnection. Руководства и примеры проектов будут иметь весь исходный код, необходимый для начала работы в правильном направлении.