NSCacheNSCache — это изменяемая коллекция, предназначенная для временного хранения пар ключ-значение. Она особенно полезна для кеширования дорогостоящих в создании объектов, таких как изображения или сетевые ответы, потому что автоматически управляет собственной памятью.
DictionaryУправление памятью:
NSCache автоматически удаляет записи когда система испытывает нехватку памяти, помогая предотвратить крашиDictionary держит все хранящиеся объекты неопределённо долго, требуя ручного удаления для освобождения памятиПотокобезопасность:
NSCache потокобезопасен по умолчанию, то есть его можно безопасно читать и писать из разных тредов без дополнительной синхронизацииDictionary не потокобезопасен и требует ручной блокировки или других механизмов конкурентности, чтобы избежать гонок данныхРабота с ключами:
NSCache не копирует свои ключи, в отличие от Dictionary, который копирует ключи для обеспечения уникальностиNSCache должны соответствовать NSObjectProtocol, а не Hashablelet cache = NSCache<NSString, UIImage>()
// Сохраняем изображение
cache.setObject(image, forKey: "profileImage")
// Получаем изображение
if let cachedImage = cache.object(forKey: "profileImage") {
imageView.image = cachedImage
}
NSCacheNSCache при хранении временных, пересчитываемых данных, которые можно безопасно удалитьDictionary когда тебе нужна гарантированная сохранность всех хранящихся значений на протяжении всего времени жизни объектаNSCache автоматически удаляет записи из памяти при дефиците памяти в системе, в то время как Dictionary сохраняет все объекты бесконечно долго до явного удаления.
Новый — ещё не проверен сообществом
Вы