이미지의 캐싱
1) 메모리 캐시에서 이미지를 검색한다.
2) 없을 경우, 디스크 캐시에서 이미지를 검색한다.
3) 없을 경우, URL에서 이미지를 비동기 로드한다.
4) 메모리 캐시와 디스크 캐시에 해당 이미지를 저장한다.
5) 다음 번 요청시에는 메모리 캐시에서 이미지를 불러온다.
6) 프로세스 재지작 이후 요청시에는 디스크 캐시에서 불러온 후 메모리 캐시에 추가한다.
우리가 쓰는 UIImage 이니셜라이저의 차이점은 뭐가 있을까용ㅇㅇㅇ
앱이 이미지를 읽어 들일때 파일 시스템을 통해 이미지 파일을 열고 데이터를 읽어야 하므로 I/O가 발생하는데 이미지 파일을 읽을 때마다 발생하는 I/O는 성능에 큰 영향을 끼친다. 그래서 이를 해결하기 위한 방법 중 하나가 바로 캐싱(Caching). UIImage(named:)방식으로 생성한 이미지객체는 한번 읽어본 이미지를 메모리에 저장해둔 다음에 두번째 호출부터 메모리에 저장된 이미지를 가져온다.
– 주의할 점은 이렇게 저장된 메모리는 이미지 객체를 다 사용한 후에도 잘 해제되지 않는다.
– 이미지 객체로 인한 메모리 점유가 걱정되는 경우 UIImage(contentsOfFile:) 생성자를 사용해 이미지 객체를 생성하는 것이 좋다.
– 이 생성자를 사용해 생성된 이미지객체는 캐싱되지 않는다. 하지만 이미지 데이터를 매번 다시 읽어와야 하므로 앞의 방식보다 성능이 약간 저하될 수 있다.