Perché il collegamento con una NSURLSession tramite la sua configurazione richiede così tanto tempo da provocare il crash dell'applicazione all'avvio: "impossibile eseguire l'avvio in tempo"?Perché la connessione a uno sfondo iOS NSURLSession impiega troppo tempo ad attendere un blocco, causando il blocco dell'applicazione?
Ho visto crash-crash simili in molte app iOS, tra cui l'app NY Times per iOS e l'app Evernote.
[NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:queue]
Ecco la traccia dello stack:
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
Anche io sto affrontando lo stesso problema con la traccia dello stack esatta. Non è in grado di scoprire la causa principale. @ Rayyan, sei riuscito a risolvere il problema? – kkumpavat
Ho spostato la chiamata per eseguire in modo asincrono su un thread in background in modo che il sistema operativo non risolva l'applicazione a causa di questo. Tuttavia, la chiamata sessionWithConfiguration si blocca e non ritorna mai. Accade raramente, ma una volta che un dispositivo si trova in cattivo stato, si blocca costantemente su quel dispositivo. @kkumpavat, è questo che stai vedendo anche tu? Sospetto che sia un bug in iOS. – Rayyan
Sì, ho anche il sospetto che si tratti di un bug in iOS. Succede raramente e una volta che iOS si trova in quello stato negativo, l'esecuzione si blocca in "sessionWithConfiguration: delegate: delegateQueue:" ogni volta. Anche lo spostamento della chiamata per l'esecuzione in modo asincrono non aiuta poiché la sessione non viene mai inizializzata e non saremo in grado di eseguire attività di rete. – kkumpavat