캐시 할 때는 당연히 NSCache를 썼는데 왜 쓰는지에 대해 깊게 생각하지 않았었다.

이전에 했던 프로젝트 중에 NSDictionary로 캐시 구현한게 있길래 구체적으로 차이점을 짚어 보려고 한다.


결론부터 말하면 딕셔너리보다는 NSCache 가 더 유용하다.


1. NSCache는 메모리 관리가 기본적으로 제공된다.

다른 앱에서 메모리를 더 사용하려고 하면 캐시되어 있던 데이터를 지우고 메모리를 해제한다.


2. NSCache는 Thread-safe 하다.

캐시 데이터를 읽고 쓰고 지울때마다 따로 lock을 해줄 필요가 없다.

반면 NSDictionary는 Threadd-safe 하지 않기 때문에 데이터 접근할 때 따로 처리해줘야 한다.


3. NSDictionary는 Key 값을 copy하지만 NSCache는 retain 카운트만 증가 시킨다.

복사를 지원하지 않는 객체까지 포용한다.



[ 관련 클래스 ]


NSDiscardableContent

객체를 더이상 사용하지 않을 때 바로 메모리 해제할 수 있는 메소드가 정의되어 있는 프로토콜


NSPurgeableData

NSMutableData를 상속받으며 NSDiscardableContent 프로토콜이 구현되어 있음



* 참고문서 : https://developer.apple.com/documentation/foundation/nscache


+ Recent posts