2011-03-21 2 views
1

동기식 네트워크 호출을 비동기식 네트워크 호출과 바꾸려고합니다. 문제는 상대적으로 신속하게 시간 초과해야하기 때문에 동기화 네트워크 연결을 사용하는 것이 거의 불가능하다는 것입니다.별도의 스레드에서 비동기 URL 요청 사용?

코드는 비동기 네트워크 호출을 지원하도록 구조화되어 있지 않으므로 비동기 호출을 수행하는 별도의 스레드를 생성하여 동기 호출을 "시뮬레이트"하고 싶습니다. , 통화가 끝났는지 확인하거나 제한 시간이 경과 할 때까지 기다립니다. 시간 초과가 발생하면 네트워크 요청을 취소하십시오.

새 스레드에서 연결을 만들고 해당 스레드가있는 경우 연결이 종료됩니까?

저는 IOS 개발 및 목표 -c에 익숙하지 않으며 우리의 작업 큐가 네트워크 요청을 처리하는 방법을 다시 작성하지 않아서 제 접근 방법에 대한 대안을 듣고 싶습니다.

답변

6

관심이 있으신가요? ASIHTTPRequest 라이브러리, 멋진 오픈 소스 CFNetwork 래퍼 세트를 살펴 보셨습니까? 완료 및/또는 실패시 실행될 블록에서 시간 초과 및 전달을 지정할 수있는 기능을 포함하여 매우 유용한 비동기 네트워킹 기능이 있습니다.

특히 Objective-C 및 iOS를 처음 사용하는 경우 휠을 다시 만들 필요가 없으므로 많은 고통을 덜어 주며 네트워크 작업을 크게 단순화합니다. 우리 (내가 일하는 회사)는 압도적 인 다수의 빌드에서 현재이를 사용합니다. 매우 안정적이며 극도로 유용합니다. 아직 라이브러리와 관련된 분석 결과로보고 된 버그를 얻지 못했습니다. 이는 수백만 세션에 걸쳐 발생합니다. 이러한 종류의 네트워킹 작업을 단순화하기에는 충분히 추천 할 수 없습니다.

다른 접근법을 제안했기 때문에 다른 라이브러리를 소개하거나 프로젝트에서 OSS 코드를 사용할 수없는 경우 이해할 수 있지만 제안 할 것입니다.

편집 : 링크를 제공해 주시면 도움이됩니다. http://allseeing-i.com/ASIHTTPRequest/

+0

+1 for ASIHTTPRequest; 그것은 많은 시간을 절약 해주었습니다. – zpasternack

관련 문제