2013-02-15 15 views
5

Używam AFJSONRequestOperation do przesyłania obrazów.Limit czasu dla AFNetworking

W przypadku przesyłania liczby obrazów, niektóre żądania nie mogą zostać dostarczone z błędem limitu czasu.

Próbowałem

AFJSONRequestOperation *operation = ... 
[operation start]; 

i

AFJSONRequestOperation *operation = ... 
[operations addObject:operation]; 
... 
[client enqueueBatchOfHTTPRequestOperations:operations progressBlock:nil completionBlock:nil]; 

Jednak nadal nie ma szczęścia.

Myślę, że licznik czasu rozpoczyna się po utworzeniu operacji.

Czy powinienem zaplanować żądania pojedynczo dla mojego własnego algorytmu?

Odpowiedz

1

Warto zwrócić uwagę na to, że AFNetworking tworzy tyle NSSperations, ile system ma zasoby i uruchamia je jednocześnie. Problem polega na tym, że istnieje tylko tyle jednoczesnych połączeń sieciowych, jakie może wykonać aplikacja/komputer. Liczenie rozpoczyna się zaraz po rozpoczęciu operacji. Ze względów praktycznych na iPhonie mogą nie pojawić się problemy, ponieważ jest mniej zasobów do uruchomienia wielu operacji, ale symulator może uruchamiać setki wątków naraz (wiele więcej niż maksymalne równoczesne połączenia sieciowe).

Moja sugestia to ograniczenie liczby równoczesnych operacji (znajdujących się w AFHTTPClient, jak sądzę) do czegoś bardziej rozsądnego niż NSOperationQueueDefaultMaxConcurrentOperationCount, co pozwala urządzeniu uruchomić tyle zasobów, na jakie ma zasoby.

+0

Możesz być zainteresowany tym błędem, a następnie: https://github.com/AFNetworking/AFNetworking/issues/953 –

+0

Inną opcją jest uzależnienie każdej operacji od poprzedniej operacji. –