Что такое NSCache? - PullRequest
       19

Что такое NSCache?

15 голосов
/ 23 июня 2011

Может кто-нибудь кратко объяснить мне, когда мне нужно будет использовать NSCache? Я читаю документацию и не понимаю. Например, приведите пример сценария, в котором NSCache будет полезен? Спасибо.

1 Ответ

19 голосов
/ 23 июня 2011

Это более или менее похоже на словарь со следующими дополнительными функциями (как указано в документации):

Класс NSCache включает в себя различные политики автоматического удаления, которые гарантируют, что он не будетиспользовать слишком много системной памяти.Система автоматически выполняет эти политики, если память требуется другим приложениям.При вызове эти политики удаляют некоторые элементы из кэша, минимизируя объем занимаемой им памяти.

Вы можете добавлять, удалять и запрашивать элементы в кэше из разных потоков без необходимости самостоятельно блокировать кэш.

Извлечение чего-либо из объекта NSCache возвращает автоматически высвобождаемый результат.

В отличие от объекта NSMutableDictionary, кэш не копирует ключевые объекты, которые в него помещены.

Вы можете использоватьэто если ваше приложение имеет много данных, с которыми оно должно работать, но вы не можете хранить все это в памяти.Например, если у вас есть приложение, которое извлекает данные из базы данных SQL Lite или веб-службы, вы можете сохранить их в NSCache после их поиска.Затем, когда вам это понадобится снова, вы можете сначала проверить кеш, и вам нужно только поразить базу данных, если ее нет в кеше.Основное преимущество в этом сценарии по сравнению с использованием обычного словаря состоит в том, что если вы поместите слишком много вещей в кеш и он начнет заполнять память, он автоматически отбросит вещи, чтобы освободить память для вас.

...