Объект NSCache является контейнером или кэшем, который хранит пары “ключ-значение”, аналогично классу NSDictionary. Разработчики часто используют кэши для временного хранения объектов, создание которых является дорогостоящим. Повторное использование этих объектов может обеспечить повышение производительности, потому что их значения не должны быть пересчитаны. Однако, эти объекты не являются критическими для приложения и могут быть удалены, если память ограничена. Если такие объекты удалить, их значения нужно вычислить заново, когда это необходимо.
Пока пара ключ-значение в кэше, кэш поддерживает сильную ссылку на него. Общие типы данных, хранящиеся в объектах NSCache — это объекты, которые реализуют протокол NSDiscardableContent. Хранение объектов этого типа в кэше имеет преимущества, поскольку их содержимое может быть удалено, если они больше не нужны, что приводит к экономии памяти. По умолчанию объекты, реализующие NSDiscardableContent, автоматически удаляются из кэша, если их содержимое удаляется, хотя эта политика автоматического удаления могут быть изменена.
Объекты NSCache имеют несколько отличий от других изменяемых коллекций. Класс NSCache включает в себя различные политики автоматического удаления, обеспечивающие использование не слишком большого количества памяти системы. Система автоматически осуществляет эти политики, если память необходима другим приложениям. При вызове эти политики удаляют некоторые элементы из кэша, сводя к минимуму использование памяти. Вы можете добавлять, удалять и запрашивать элементы из кэша из разных потоков без необходимости блокировки кэша. В отличие от объекта NSMutableDictionary, кэш не копирует ключевые объекты, добавленные в него.