Kingfisher 라이브러리 도입 배경

우리가 개발하는 POKI 앱은 사용자의 사진을 저장하고 불러오는 과정에서 많은 이미지를 사용하게 된다. 이런 과정에서 발생하는 문제점은 뭐가 있었을까?

문제점

  1. 이미지를 불러오는 과정이 1초 정도(체감 상) 걸린다.
  2. 이미지를 사용할 때 마다, 이미지 URL을 통해 이미지를 반복해서 불러오는 것은 비효율적이다.

위와 같은 문제점을 해결하기 위해 이미지 다운로드 기능과 이미지 캐싱 기능을 제공하는 Kingfisher 라이브러리를 사용하게 되었다. 추가적으로 이미지 처리 과정에서 발생하는 문제를 해결하기 위한 옵션도 제공한다.


사용법

사용 예시 코드

let url = URL(string: "<https://example.com/image.jpg>")
imageView.kf.setImage(with: url)

아래와 같은 순서로 동작한다.

  1. url.absoluteString 키 값으로 이미지가 캐시되어 있는지 확인한다.
  2. 캐시(메모리 or 디스크)에서 이미지가 발견된 경우 imageView.image 로 설정한다.
  3. 그렇지 않은 경우, URLRequest 를 만들고, URL을 통해 데이터를 다운로드한다.
  4. 다운로드한 데이터를 UIImage 객체로 변환한다.
  5. 이미지를 메모리 캐시에 저장하고, 데이터는 디스크 캐시에 저장한다.
  6. imageView.image 를 설정한다.