2016-09-18 3 views
0

내 앱이 tableView 셀에 이미지를 표시합니다. 내가 달성하고 싶은 것은 셀이 화면에서 사라진 경우에도 이미지를 순서대로로드하는 것입니다. 예를 들어, 셀 1에서 100까지 셀이 표시되고 사용자가 이미 셀 78로 스크롤 한 경우에도 이미지가 백그라운드에서 1에서 100으로 다운로드되기 시작합니다. 또한 한 두 이미지 만 다운로드하고 싶습니다. 시간 그래서 나는 네트워크를 늪지 않습니다. 이러한 기준을 염두에두고 어떤 종류의 설정이 가장 적합할까요?테이블 셀에 이미지 및 디스플레이 다운로드 (동시)

지금은 이미지를 다운로드 할 때 AlamoFire를 사용하고 있습니다. 어떤 종류의 NSOperationQueue와 Alamofire의 조합이 적합할까요? 나는이 단계에서 NSOperationQueue에 익숙하지 않다. 그래서 내가 앱이 배경

주에있는 경우에도 다운로드를 계속

가 나는 또한 기능을 결합하고 싶습니다 NSOperationQueue

설정에 깊은가는 시작하기 전에 권장 업계 관행을 찾으려고 줄 알았는데 . 다른 라이브러리 또는 프레임 워크 솔루션도 환영합니다.

+1

제안을 위해'SDWebImage' lib를 사용하면'tableViewCell'에 대해 정확히 할 것입니다. –

답변

0

가장 좋은 해결책은 SDWebImage입니다. 이 저장소에 대한 링크는 here입니다. 종속성없이 자신 만의 방식으로하고 싶다면 SDWebImage가하는 것과 동일한 것을 따라야합니다. 한마디로

,

  • 비동기 동시에 URL에서 이미지를 다운로드 스레드에서 다운로드를 시작합니다.
  • 그런 다음 다운로드 후 NSCache을 사용하여 이미지를 저장하고 imageURL을 키로 사용하십시오.
  • NSCache에 이미지를 저장 한 후에 이미지를 NSCacheDirectory에 URL의 이미지 이름과 동일하게 씁니다.

이제 이미지를 가져와야하는지 확인해야합니다. NSCache에 이미지가 있는지 여부는 imageURL을 키로 사용하여 쉽게 검색 할 수 있습니다. 찾은 경우 이미지를 반환하거나 NSCacheDirectory으로 이미지가 있는지 여부를 검색하십시오. 그렇지 않은 경우 이미지를 다운로드하고 단계를 다시 수행해야합니다.

이제 NSCache은 RAM과 같습니다. 거기에 저장된 데이터는 응용 프로그램이 활성화되어있는 한 계속 남아 있습니다. 종료되면 NSCache의 데이터가 정리됩니다. 따라서 우리는이 파일을 NSCacheDirectory에 씁니다. 여기에있는 데이터는 앱이 장치에서 삭제되지 않는 한 영구적입니다.

나는이 작품이 어떻게 작동하는지 이해할 수 있기를 바랍니다. 건배.