はじめに
NSCacheを使ってUIImageをキャッシュする実装について記事に残します。
開発環境
- macOS Big Sur 11.3.1
- Xcode 12.5
- Swift 5.4
実装
キャッシュする際のキーはAnyObject型、値はUIImage型としています。
protocol ImageCache { var cache: NSCache<AnyObject, UIImage> { get set } subscript(key: AnyObject) -> UIImage? { get set } } struct DefaultImageCache: ImageCache { var cache = NSCache<AnyObject, UIImage>() subscript(key: AnyObject) -> UIImage? { get { cache.object(forKey: key) } set(image) { cache.setObject(image!, forKey: key) } } }
おわりに
次回はEnvironmentValuesについて記事に残そうと思います。