Несколько соединений не обслуживаются, iphone, используя соединение http / https - PullRequest
0 голосов
/ 28 ноября 2011

Я следовал приведенному ниже коду, чтобы установить соединение https в моем приложении для извлечения некоторых данных в формате xml в моем приложении iphone (iOS4).

  1. Создание соединения с помощью NSURLConnection
  2. соединение: didReceiveResponse: реализация
  3. подключение: didReceiveData
  4. connectionDidFailWithError
  5. connectionDidFinishLoading

Я сослался на следующее, чтобы установить соединение: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

Все отлично работает для одного соединения. Но если я пробую 2 (или более) соединения одновременно (каждое соединение находится в отдельном потоке), и если первое соединение обслуживается, то второе соединение отбрасывается.

Второе соединение никогда не ставится в очередь. Это просто отбрасывается. Подается только первый.

В чем может быть проблема? Мое требование - создать несколько (не менее 2) соединений одновременно.

Также, пожалуйста, поделитесь примером кода или ссылкой или примером, если это возможно. Спасибо

1 Ответ

0 голосов
/ 28 ноября 2011

Запустить NSURLConnection в отдельном потоке непросто.Если вы просто выполняете NSURLConnection в отдельном потоке, вы не можете обрабатывать методы делегата, потому что ваш поток завершен до того, как ваш код фактически выполнится.


После того, как вы инициализировали объект NSURLConnection, вам действительно нужно поместитькласс в бесконечном цикле, чтобы убедиться, что класс все еще жив, когда методы делегата нажаты.

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:urlReq delegate:self];

while(!finished) {
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}

- (void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    finished = TRUE;
}

См. эту статью - NSURLConnection в своем собственном потоке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...