2016-08-27 1 views
0
나는 다음과 같은 상황에서 같은 endpoint을 칠 필요가

관리 :NSOperationsQueue : 동일한 요청

  1. 뷰 화면 viewWillAppear에 다시 나타납니다.
  2. 뷰 컨트롤러의 수명주기 동안 (보기가 표시되는 동안) 5 초마다.
  3. background에서 foreground으로 앱을 반환 한 후 같은 endpoint

이 적어도 2를 생성하지 않을 경우 3, concurrent 요청 때 특히 느린 인터넷 연결시 foreground에 내 애플 리케이션 돌아갑니다.

는 내가 1로 Queueconcurrent 요청의 수를 제한 할 수 있습니다 알고 있지만 가끔은 내가 대안을 찾으려하고 몇 가지 다른 endpointsconcurrently을 공격 할 필요가 있습니까.

NSURLSessionNSOperationsQueue을 사용하여 이러한 호출을합니다. NSOperationsQueue으로 처리하는 것이 가장 좋은 방법입니까?

+0

트래픽 컨트롤러 클래스를 작성하여 큐를 관리 할 수 ​​있습니다. URL 작업이 보류 중이거나 지난 5 초 내에 완료된 경우 새로운 삽입 요청을 무시하십시오. –

답변

1

NSOperation 동일한 작업 인 하위 클래스를 통합 (결합)하여 중복 네트워크 호출을 제거 할 수 있습니다. 이 작업을 수행하려면 각 작업에 작업 자체가 아닌 작업에 고유 한 identifier이 있어야하며 해당 작업이 대기열에 있는지 확인하는 데 사용할 수 있습니다. 작업이 대기열에 있다고 판단되면 새 작업의 블록/클로저 콜백을 가져와 이전 작업 구조에 삽입하여 이전 작업의 작업이 완료되면 두 콜백이 모두 실행되도록 할 수 있습니다. 이렇게하면 앱에 콜백이 누락되어있는 상황을 피할 수 있습니다.

나는이 정확한 주제를 다루고 있습니다 기사 작성했습니다 :

http://williamboles.me/removing-bolierplate-when-coalescing-nsoperations/

주의를 당신이에 따라 작업을 제한 할 경우, 큐 아직 작업이 유일한 작품 시간 간격을두고 "Code Different"와 같이 "트래픽 컨트롤러"를 확장해야합니다.

관련 문제