Ссылка Кельвина не работает, вот немного кода, который делает то, что вы просите (предназначенный для запуска в методе, вызываемом [NSThread detachNewThreadSelector: toTarget: WithObject:]). Обратите внимание, что соединение в основном начинает работать как soo, когда вы входите в цикл выполнения, и что «terminateRunLoop» должен быть BOOL, для которого установлено значение NO при запуске и значение YES, когда соединение завершает загрузку или имеет ошибку.
Почему вы хотите сделать это вместо блокирования синхронного запроса? Одна из причин заключается в том, что вы можете захотеть правильно отменить длительное соединение, даже если у вас их не много. Также я видел, как пользовательский интерфейс немного зависает, если вы начинаете выполнять несколько асинхронных запросов в основном цикле выполнения.
NSURLConnection *connection = [[NSURLConnection connectionWithRequest:request delegate:self] retain];
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
while(!terminateRunLoop)
{
if ( ![[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
beforeDate:[NSDate distantFuture]])
{ break; }
[pool drain];
}
[pool release];
}