2

나는 다음 단계 시나리오를 수행해야합니다전체 시나리오에서 작업 큐를 사용해야합니까?

  1. 그런 다음 사용자가 제공 한 일부 검색 매개 변수를 사용하여 네트워크 전화를 걸려면
  2. 그런 모델 엔티티의 JSON 응답을 구문 분석하고 만들 생성 된 각 엔티티 및 관련 이미지 URL이있는 경우 해당 이미지를 다운로드하기위한 해당 서비스를 호출하고 다운로드가 완료되면 UICollectionView에 표시합니다.

내가 필요로하는 N 개의 이미지를 다운로드 할 때 동시 네트워크 호출을 처리해야합니다. 사용자는 현재 검색 흐름을 취소하고 새 검색 흐름을 시작할 수 있어야합니다. 또한 특정 이미지의 셀이 아직 표시되지 않았거나 대기열에서 빠져 나왔음을 고려해야합니다. 그래서, 제 질문은 이것입니다 : 이것은 가장 좋은 접근 방법이 될까요?

  • 는 제 네트워크 호출 (동시성) 및 JSON 응답 직접 분석 URLSessionURLSessionDownloadTask를 사용하고, 후속 단계는 OperationOperationQueue를 사용하여 수행한다. 사용자가 현재 검색을 취소하려는 경우 OperationQueue의 경우 URLSessioninvalidateAndCancel()cancelAllOperations()을 모두 사용하십시오.
  • OperationOperationQueue을 사용하여 전체 프로세스를 수행하십시오.
  • 기타 다른 적절한 접근 방법은 무엇입니까?
+0

을 이후의 네트워크 호출을 위해 그들이 종속성이 없기 때문에 또는 그들 중 우선 순위 NSOperationQueue를 사용하여 (이 경우에는 필자가 생각할 수있는 주요 이점은 의존성과 우선 순위이다) 나는 가치가 없다고 생각한다. NSURLSession의 여러 데이터 작업을 시작할 수 있으며 나중에 URLSession에서 invalidateAndCancel을 호출하는 것이 좋습니다. 그러나 inorder 이미지를 다운로드하고 그것을 CollectionView에서 보여주는 것은 SDWebImage를 사용하는 것을 선호합니다. 그것은 광범위하게 캐싱을 수행하고 이미지를 다운로드하고 UI를 효율적으로 업데이트하여 collectionView/tableView의 이미지를 효율적으로 표시합니다. D –

답변

0

가장 좋은 방법은 동기화 또는 비동기 호출을 수행하여 첫 번째 서비스 호출을하는 것입니다. 완료되면 json을 동 기적으로 구문 분석 한 다음 이미지를 표시하기 위해 이미지를 다운로드 할 것인지를 결정하기 위해 지연로드 개념 (비동기 호출)을 사용합니다.

+0

동기화 네트워크 호출 !!! 흥미로운 NSURLSession의 API는 동기식 호출을합니까? 내가 아는 한 네트워크 호출 용 동기 API는 없습니다 –

+0

NSURLSession이 아닙니다. NSURLSession 또는 URLSession은 완전히 비동기식 서비스 호출입니다. 오래된 NSURLConnection을 사용할 수 있습니다. 내가 그렇게 할 필요는 없다. – NKB

+0

죄송합니다, 아마도 내 질문 제목 조금 혼란 스러웠다 ... 사실 내 질문에 대한 URLSession 또는 (비동기)'운영' – AppsDev

0

네트워크 호출을 수행 한 다음 모델 개체를 만듭니다. 이를 API 완성 블록을 통해 VC로 반환하십시오.

그런 다음 셀에 이미지 비동기 보여 SDWebImage 같은 것을 사용, 컬렉션 뷰를 다시로드하고 각 셀에 URL을 통과 자체에 대한 각 셀 걱정이 ..