http 서버에 대한 쿼리를 비동기 적으로 실행하고 응답을 처리해야합니다. 쿼리는 실제로 콜백이있는 메서드 호출 꽤 큰 체인입니다. 이것은 일련의 호출 중에 리턴 경로가 많기 때문에 복잡성이 추가됩니다.백그라운드 요청을 안정적으로 관리하는 방법은 무엇입니까?
현재 요청이 완전히 완료 될 때까지 새 요청을 시작해서는 안됩니다.
이- 일부 스레드가
[Foo poll]
를 호출다음은 일반적인 개요입니다.
poll
메서드는 백그라운드에서 실행되는 몇 가지 HTTP 요청을 시작합니다. 이 경우 ASIHTTPRequest.- 요청은 결국 응답을 구문 분석하는
[Foo onRequestComplete]
을 호출합니다. On error[Foo onRequestError
]가 호출됩니다. 이것은 두 번째 반환 경로입니다. - 그러면 더 많은 콜백이 콜백과 더 많은 리턴 경로로 서버에 수행됩니다.
- 결국 몇 가지 물건을 디스크에 저장합니다.
- 여론 조사는
여기에 완료 캐치이다 :이 단계 동안, poll
에 (반환) 무시 또는 설문 조사가 완료 될 때까지 차단해야 호출합니다.
다른 폴링이 실행되는 동안 poll
기능 블록 또는 no-ops를 어떻게 확인할 수 있습니까?
한 매우 순진한 접근 방식은'Server.isBusy' 속성을 추가하는 것입니다,하지만 안전 및 유지 보수가 매우 지저분 스레드되지 않으며, 오류 처리 경로 등 고려 GCD, 블록 또는 동기화 된 무엇입니까? –
잠금 또는 GCD - http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html#//apple_ref/doc/uid/10000057i-CH8-SW1 – Joe