2014-06-17 3 views
1

NSURLSession은 리팩터링이 NSURLConnection이고 몇 가지 새로운 기능이 추가되었습니다. 나는 둘 다 사용하는 응용 프로그램과 관련된 문제에 대한 작업을 해왔습니다. 그리고 이것이 괜찮은지 궁금합니다. 또는 NSURLSession을 추가 할 때 NSURLConnection 메서드를 완전히 포기해야 할 필요가 있습니까?NSURLSession 및 NSURLConnection 호환성

구체적으로 말하자면, 임의적으로 요청이 만들어지고 아무 것도 응답으로 반환되지 않는 것입니다. webView[webView isLoading]을 묻는 경우 대답은 YES이지만, connectionDidFinishLoading:도 아니고 URLSession:didBecomeIvalidWithError:도 아니고 webView:didFailLoadWithError:도 아닙니다. 또한 [webView stopLoading]을 사용하여로드를 중지하도록 웹보기를 요청하면 [webView isLoading]이 계속해서 YES 인 것으로 보입니다.

익숙한 소리가 들리면 누군가가 시도 할만한 제안을 줄 수 있습니다. 나는 아이디어가 부족하다. NSURLSession을 사용하는 동안 NSURLConnection을 안전하게 사용할 수없는 경우 NSURLConnection을 더 이상 사용하지 않아도되지만 리사이저를 사용하지 않아도 문제가 해결되지 않는 경우에는 사용하지 않는 것이 좋습니다.

답변

0

스레딩 문제가있는 것 같아요. NSURLSession과의 차이점은 백그라운드 스레드에서 대리자가 실행되므로 해당 메서드의 직접 UI 업데이트가 작동하지 않으므로 먼저 주 스레드로 다시 전송해야합니다. 과도한 업로드 또는 다운로드를하지 않는 한 해당 기능이 필요하지 않을 수 있습니다. 있는 NSURLConnection의 원래 메인 스레드 설계를 회복하려면 (메인 스레드를 의미)의 주요 작업 큐와 NSURLSession의 설정을 만들 수 있습니다

[NSURLSession sessionWithConfiguration:nil delegate:nil delegateQueue:[NSOperationQueue mainQueue]]; 

이제 모든 참가자는 메인 쓰레드 될 것입니다. [NSThread isMainThread]로 이것을 확인할 수 있습니다. 그러면 UI를 원하는대로 업데이트 할 수 있습니다.

관련 문제