관광명소 검색화면에서 빠르게 스크롤 시 적합한 관광명소 이미지를 보여주지 못하는 문제 - boostcampwm-2021/iOS04-OwnMyWay GitHub Wiki

문제 상황

  • 관광명소 화면을 CollectionView로 구성하였고 UIImageView에 Extension으로 URLSessionDataTask를 통해 이미지를 다운로드하게 구현했었다.
  • CollectionView의 Cell이 불러오면서 다운로드를 진행하는데 CollectionViewCell은 재사용이 되기 때문에 이미지가 다운로드가 완료된 시점에 이미지를 띄워서 이미지와 관광명소의 제목이 맞지 않는 문제가 발생했다.

문제 해결

  • CollectionView가 Cancel이 가능한 Cancellable 프로토콜을 채택한 변수를 가지고 있게 만들었다.
  • URLSessionDataTask에 Cancellable 프로토콜을 채택하고 cancel함수를 구현했다.
  • CollectionView Cell의 prepareForReuse 함수에서 cancellable Property를 cancel해주었다. 이러한 방식으로 구현하면 다운로드가 완료되지 않은 task들은 다운로드가 취소되어 완료된 이미지들만 일치하는 제목의 Cell에 그려진다.