NSCache

김세영·2022년 3월 8일
0
post-thumbnail

Caching

  • 재사용 할 가능성이 있는 데이터들을, 원래 데이터의 위치에서 접근하는 것 보다 빨리 접근할 수 있는 위치에 저장해놓는 것
  • 연산된 값을 저장해 놓음으로써 다시 계산하는 시간을 절약하는 것

Disk Caching

  • 캐시 데이터를 디스크에 파일 형태로 저장
  • 디스크에 저장하므로 앱이 종료되어도 데이터가 삭제되지 않는다.
  • 캐싱이 많이 일어나면 디스크에서 앱이 차지하는 용량도 늘어난다.

Memory Caching

  • 캐시 데이터를 메모리에 할당
  • 메모리에 할당하므로, 앱이 종료되면 캐시 데이터도 메모리에서 해제되고 사라진다.

NSCache - Documentation

리소스가 부족할 때 제거될 수 있는, 변경 가능한(Mutable) Key-value 쌍의 컬렉션

Declaration

Overview

캐시 객체와 다른 가변 컬렉션들은 다음과 같은 차이를 가지고 있다.

  • NSCache 클래스는 캐시가 메모리를 너무 많이 차지하지 않도록 여러 자동 제거 정책을 사용한다. 다른 애플리케이션에서 메모리를 사용하고자 할 때 이러한 정책들로부터 일부 항목을 제거한다.
  • 캐시를 잠그지 않고도 다른 스레드에서 캐시에 접근(add, remove, query items)할 수 있다.
  • NSMutableDictionary 와 달리, 안에 들어있는 key객체를 복사하지 않는다.

특징

  • countLimit 변수로 캐시가 최대로 가질 수 있는 객체의 수를 조절할 수 있다.
  • totalCostLimit 변수로 객체 제거 전 캐시가 유지할 수 있는 최대 비용을 조절할 수 있다.
  • Declaration에서 보이는 바와 같이 KeyType: AnyObject, ObjectType: AnyObject이므로 클래스 타입만을 사용할 수 있고, Swift의 기본 데이터 타입들은 구조체(struct)이므로 사용할 수 없다.
profile
초보 iOS 개발자입니다ㅏ

0개의 댓글