2012-05-10 3 views
0

Я пишу приложение на основе местоположения, получаю информацию о погоде через API, используя NSURLConnection для текущих/других мест. В первый раз я отправил запрос на его успешную работу. Но в следующий раз, когда я хочу передать информацию для того же места, она не работает, а NSURLConnection не вызывает никаких методов делегата.NSURLConnection не запускается

это мой код:

NSString *strs=[@"http://www.earthtools.org/timezone-1.1/" stringByAppendingString:[NSString stringWithFormat:@"%@/%@",place.latitude,place.longitude]]; 

NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:strs]]; 

self.reqTimeZone=[NSURLConnection connectionWithRequest:request delegate:self]; 
[self.reqTimeZone start]; 
+0

Выполняется ли этот блок кода в основном потоке или фоновом потоке? Если вы работаете в фоновом потоке, вам нужно прикрепить соединение к runloop потока. – 0x8badf00d

ответ

6

Я предполагаю, что вы имеете в виду NSURLConnection (NSConnection не существует). NSURLConnection может использоваться только один раз. См. Reusing an instance of NSURLConnection.

Еще одна проблема с NSURLConnection заключается в том, что она должна бежать по нитке с помощью runloop. Основной поток автоматически имеет цикл выполнения, но для методов, называемых потоками GCD и NSOperation, необходимо, чтобы runloop был создан явно. На практике вам, вероятно, не нужно запускать NSURLConnection в фоновом потоке. Операция загрузки не будет блокировать основной поток. Если вы решите запустить NSURLConnection в цикле запуска, самым простым способом сделать это, вероятно, является создание подкласса NSOperation и создание цикла запуска внутри -main.

+0

Я отправил запрос NSURLConnection, он работает отлично. Теперь я хочу обновить информацию. I.e повторно отправить NSURLConnection.Refresh работает при вызове из IBAction кнопки. Но не работает из метода NSThread. как решить эту проблему. Спасибо за повтор – Madhubalan

Смежные вопросы