Używam obiektu NSMutableURLRequest do łączenia się z witryną sieci Web, aby uzyskać odpowiedź JSON. Robię to, generując żądanie, a następnie używając NSURLConnection z delegatem self do obsługi połączenia asynchronicznego. I zostały wdrożone wszystkie normalne metody Delegat:Obsługa rekordu NSURLRequest z limitem czasu podczas używania delegata
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
wszystko działa doskonale pobierania danych z powrotem do czynienia z wszelkich błędów, które występują itp Jednak z limitu czasu na NSURLRequest ustawiony na 10 sekund, nie wydaje aby zostać wywołanym tymi metodami (spodziewałem się wywołania metody didFailWithError). Siedzi tam na zawsze i nie mam powiadomienia, że upłynął limit czasu.
Czytanie dokumentów API iPhone'a Nie widzę żadnej wzmianki o tym, co powinno się zdarzyć po przekroczeniu limitu czasu, tylko że można ustawić wartość limitu czasu. Co powinno się stać? Nie widziałem żadnych innych metod delegowania w API, które mogłyby pomóc. Nie muszę ręcznie sprawdzać przekroczeń czasu, prawda? Czy limity czasu są dostępne tylko dla żądań synchronicznych?
Zgadzam się z Coreyem, że powinienem go pobrać w metodzie didDailWithError, ale nigdy nie zostanie wywołany. Zarówno punkty przerwania, jak i logi w tej metodzie pokazują, że nie jest on wywoływany z powodu przekroczenia limitu czasu. – Parrots
Aby uzyskać więcej kontekstu, zwróć to robi różnicę, Używam metody omawianej w odpowiedzi na http://stackoverflow.com/questions/332276/managing-multiple-asynchronous-nsurlconnection-connections, aby śledzić połączenia I mieć wybitne. – Parrots
Wygląda na to, że mógł to być błąd w pakiecie beta SDK 3.0, ponieważ po wydaniu wersji końcowej działało zgodnie z oczekiwaniami. – Parrots