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 
)} 

을 얻을 때 충돌 발생하면 메서드가 호출되어 세션을 다시 만들고 Apple Documentation과 같은 완료 처리기를 저장하지만 작업 끝의 대리자는 호출되지 않으며 어느 쪽도 완료 처리기를 호출하기 때문에 충돌을 설명하는 URLSessionDidFinishEventsForBackgroundURLSession:이 아닙니다. NSURLSession 대리자에서 업로드가 끝났습니다.

대리인이 호출되지 않은 이유는 누구에게 말해 줄 수 있습니까?

+0

백그라운드 작업에 대한 좋은 정보를 얻기가 매우 어려웠습니다. 장치 콘솔 로그에서 단서를 찾았습니까? 때때로 오류 메시지가 나타납니다. –

+0

예, 장치 콘솔에서이 메시지가 표시됩니다. xCode 디버그가이 충돌을 방지하므로 디버깅 할 수있는 유일한 방법은 NSLog 및 장치 콘솔을 사용하는 것입니다. – Leonardo

답변

1

문제점을 발견했습니다. 코드의 버그로 인해 완료 처리기를 두 번 호출하게되었습니다. 다음에 앱이 깨어 났을 때 대리인이 호출되지 않았으므로 완료 핸들러가 호출되지 않아 충돌이 발생했습니다.