我一直在尝试使用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委托处理上传结束后调用了完成处理程序。
有谁能告诉我为什么代表们没有被召集?
答案 0 :(得分:1)
我发现了问题,我的代码中的一个错误导致我有时会两次调用完成处理程序。下次应用程序被唤醒时,代理人从未被调用过,因此也没有调用完成处理程序,导致崩溃