Повторное использование экземпляра NSURLConnection - PullRequest
7 голосов
/ 04 марта 2011

Я использую экземпляр NSURLConnection на iPhone для запроса данных с сервера, который, как обычно, управляется делегатом.Запросы довольно частые (скажем, раз в 2 минуты) и имеют общий и фиксированный URL.Вместо того, чтобы видеть, как хороший экземпляр NSURLConnection выпускается после каждой загрузки, а затем создается новое:

  1. Стоит ли сохранять первое соединение и использовать его повторно?(Я надеюсь, что одна хорошая аутентификация должна стоить тысячу.)

  2. Если так, как я могу использовать ее повторно?Выдающимся методом в документах является -start, но, похоже, это приводит к сбою приложения при вызове уже используемого (и не нулевого) экземпляра NSURLConnection.[Документы говорят, что -start «заставляет получателя начать загрузку данных, если это еще не сделано».]

В случае, если это поможет в отношении вышеуказанных вопросов, яЯ (был!) предлагает:

if (connection_ == nil)
   {
    connection_ = [NSURLConnection connectionWithRequest:request
                                                delegate:self];
   }
  else
   {
    [connection_ start];
   }

1 Ответ

3 голосов
/ 04 марта 2011

Документы, кажется, говорят, что соединение URL сохраняет свой делегат (нетрадиционный, но необходимый в этом случае), а затем освобождает его, когда соединение завершает загрузку, происходит сбой или отменяется.

Проблема состоит в том, что делегат не является настраиваемым свойством в NSURLConnection, и поэтому вы не можете сбросить его после его освобождения. Это в значительной степени делает URL-соединение бесполезным после его однократного запуска, требуя, чтобы вы освободили и воссоздали его, если хотите сделать это снова.

...