NSURLSession:后台崩溃,因为未调用上载委托

时间:2014-09-25 13:17:12

标签: ios background nsurlsession nsurlsessionuploadtask

我一直在尝试使用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,但任务的委托end永远不会被调用,URLSessionDidFinishEventsForBackgroundURLSession:也不会解释崩溃,因为我在NSURLSession委托处理上传结束后调用了完成处理程序。

有谁能告诉我为什么代表们没有被召集?

1 个答案:

答案 0 :(得分:1)

我发现了问题,我的代码中的一个错误导致我有时会两次调用完成处理程序。下次应用程序被唤醒时,代理人从未被调用过,因此也没有调用完成处理程序,导致崩溃