2014-09-25 1 views
0

Я пытался использовать фоновую загрузку NSURLSession, но время от времени я получаю крэшNSURLSession: фон авария, потому что делегаты загружать не называется

Sep 25 10:01:48 ipad backboardd[29] <Warning>: MyApp[11829] has active assertions beyond permitted time: 
{(
    <BKProcessAssertion: 0x166b1770> identifier: com.apple.nsnetworkd.handlesession process: MyApp[11829] permittedBackgroundDuration: 30.000000 reason: backgroundDownload owner pid:8440 preventSuspend preventThrottleDownUI preventIdleSleep preventSuspendOnSleep 
)} 

отладки коды, я понял, что, когда авария происходит, вызывается метод application: handleEventsForBackgroundURLSession:completionHandler:, где я воссоздаю сеанс и сохраняю обработчик завершения, как Apple Documentation reccomends, но делегаты конца задачи никогда не вызываются, и ни один из них не является URLSessionDidFinishEventsForBackgroundURLSession:, что объясняет сбой, поскольку я вызываю обработчик завершения после Я обработал окончание загрузки в делегате NSURLSession.

Может ли кто-нибудь сказать мне, почему делегаты не называются?

+0

Мне очень сложно получить хорошую информацию о том, какие фоновые задачи выполняются. Вы рассматривали журнал консоли устройства для подсказок? Иногда там появятся сообщения об ошибках. –

+0

Да, я получил это сообщение с консоли устройства, отладка xCode предотвращает этот сбой, поэтому единственный способ отладить это - использовать NSLog и консоль устройства – Leonardo

ответ

1

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

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