Dlaczego połączenie z NSURLSession przez jego konfigurację trwa tak długo, że spowodowałoby awarię aplikacji podczas uruchamiania: "nie udało się uruchomić w czasie"?Dlaczego połączenie z powrotem do systemu iOS NSURLSession trwa zbyt długo, czekając na blokadę, powodując awarię aplikacji?
Widziałem podobne zrzuty w wielu aplikacjach na iOS, w tym aplikację NY Times iOS i aplikację Evernote.
[NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:queue]
Oto ślad stosu:
Thread 0:
0 libsystem_kernel.dylib 0x3afb7aa0 semaphore_wait_trap + 8
1 libdispatch.dylib 0x3af04d3d _dispatch_semaphore_wait_slow + 173
2 CFNetwork 0x2febd8e3 -[__NSCFBackgroundSessionBridge setupBackgroundSession] + 379
3 CFNetwork 0x2fef18a1 +[__NSCFSessionBridge bridgeForConfiguration:session:queue:] + 153
4 CFNetwork 0x2fef6497 -[__NSCFURLSession initWithConfiguration:delegate:delegateQueue:] + 395
5 CFNetwork 0x2fef6eb7 +[__NSCFURLSession sessionWithConfiguration:delegate:delegateQueue:] + 295
Mam również ten sam problem z dokładnym śledzeniem stosu. Nie można znaleźć przyczyny źródłowej. @Rayyan, czy byłeś w stanie rozwiązać problem? – kkumpavat
Poruszałem się, aby uruchomić asynchronicznie w wątku w tle, aby system operacyjny nie zakończył aplikacji z powodu tego. Jednak wywołanie sessionWithConfiguration zawiesza się i nigdy nie wraca. Zdarza się to rzadko, ale gdy urządzenie przechodzi w zły stan, stale zawiesza się na tym urządzeniu. @kkumpavat, czy to też widzisz? Podejrzewam, że to błąd w iOS. – Rayyan
Tak, podejrzewam też, że jest to błąd w iOS. Zdarza się to rzadko i kiedy iOS dostaje się do tego złego stanu, wykonanie zawiesza się na "sessionWithConfiguration: delegate: delegateQueue:" za każdym razem. Również wywołanie funkcji asynchronicznej nie pomaga, ponieważ sesja nigdy nie zostanie zainicjalizowana i nie będziemy w stanie wykonać zadania sieciowego. – kkumpavat