반응형
  • 자동 제거 기능:
    NSCache는 자동으로 제거되는 기능을 제공합니다. NSCache는 시스템 리소스가 부족한 경우에도 자동으로 캐시 항목을 제거하여 메모리 부족 상황을 완화합니다. 이는 메모리 관리를 간편하게 만들어줍니다. 반면에 딕셔너리는 자동 제거 기능을 제공하지 않으므로, 수동으로 제거해야 합니다.

  • 메모리 관리:
    NSCache는 메모리 관리에 대한 자동화된 기능을 제공합니다. 메모리 부족 시 자동으로 캐시 항목을 제거하거나 자동으로 제거되는 객체에 대한 레퍼런스를 자동으로 해제합니다. 딕셔너리는 메모리 관리를 개발자가 직접 관리해야 합니다.

  • Thread Safety:
    NSCache는 여러 스레드에서 안전하게 동작할 수 있도록 설계되었습니다. 동시에 여러 스레드가 동일한 NSCache 인스턴스에 접근하더라도 안전하게 작동합니다. 반면에 딕셔너리는 스레드 안전성을 제공하지 않으므로, 여러 스레드에서 동시에 딕셔너리에 접근하면 동기화를 직접 처리해야 합니다.

  • 키와 값의 제한:
    NSCache는 기본적으로 제한된 용량을 가지며, 용량 제한에 도달하면 자동으로 캐시 항목을 제거합니다. 이는 메모리 사용을 제어하고 성능을 향상시키는 데 도움이 됩니다. 반면에 딕셔너리는 용량 제한이 없으므로 메모리 사용에 제한이 없습니다.

따라서, NSCache는 캐시에 자동 제거, 메모리 관리 및 스레드 안전성을 위한 편리한 기능을 제공하며, 일반적으로 데이터 캐싱에 많이 사용됩니다. 반면에 딕셔너리는 단순한 키-값 저장소로 사용되며, 자동 제거나 메모리 관리 등의 기능은 개발자가 직접 처리해야 합니다

- NSCache 사용예제

import Foundation

// NSCache 객체 생성
let cache = NSCache<NSString, UIImage>()

// 이미지를 캐시에 추가
func addImageToCache(image: UIImage, forKey key: String) {
    let nsKey = NSString(string: key)
    cache.setObject(image, forKey: nsKey)
}

// 캐시에서 이미지 가져오기
func getImageFromCache(forKey key: String) -> UIImage? {
    let nsKey = NSString(string: key)
    return cache.object(forKey: nsKey)
}

// 이미지 삭제
func removeImageFromCache(forKey key: String) {
    let nsKey = NSString(string: key)
    cache.removeObject(forKey: nsKey)
}
반응형
Posted by 까칠코더
,