Вы можете сделать это с помощью NSURLConnection, но код довольно сложный.
Я написал простой класс для выполнения асинхронных веб-запросов в фоновом потоке.Вы можете найти его здесь: https://github.com/nicklockwood/RequestQueue
Он работает аналогично NSOperationQueue, который предложил jsd (вы можете использовать его с NSOperationQueue, если хотите), но я думаю, что вам будет прощеиспользовать.
Вот как вы будете делать запрос от вашего контроллера представления, используя мой класс:
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://someurl?foo=bar"]];
[[RequestQueue mainQueue] addRequest:request completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
//do something with the response
}];
Поскольку он использует блоки, вам не нужно создавать метод делегата,Вы можете просто поместить свой код обработки прямо в обратный вызов (где я поместил комментарий «сделать что-то с ответом»).
Код внутри этого обратного вызова будет вызываться в главном потоке, поэтому безопаснообновите там свой пользовательский интерфейс, однако он будет вызываться через несколько секунд после того, как вы фактически запустите запрос, после того как он завершит загрузку в фоновом режиме - как метод делегата.