NSCache
NSCache
объект является подобным набору контейнером или кэшем, хранящим пары ключ/значение, подобные NSDictionary
класс. Разработчики часто включают кэши, чтобы временно хранить объекты с текущими данными, которые являются дорогими для создания. Многократное использование этих объектов может обеспечить выигрыши в производительности, потому что не должны быть повторно вычислены их значения. Если память трудна, Однако объекты не критически важны по отношению к приложению и могут быть отброшены. Если отброшено, их значения должны будут быть повторно вычислены снова при необходимости.
В то время как пара ключ/значение находится в кэше, кэш поддерживает сильную ссылку к нему. Тип общих данных, сохраненный в NSCache
объекты являются объектом, реализующим NSDiscardableContent
протокол. Хранение этого типа объекта в кэше обладает преимуществами, потому что его содержание может быть отброшено, когда это не необходимо больше, таким образом сохраняя память. По умолчанию, NSDiscardableContent
объекты в кэше автоматически удалены из кэша, если их содержание отбрасывается, несмотря на то, что может быть изменена эта автоматическая политика удаления. Если NSDiscardableContent
объект помещается в кэш, вызовы кэша discardContentIfPossible
на нем после его удаления.
NSCache
объекты отличаются от других непостоянных наборов несколькими способами:
NSCache
класс включает различные политики автоудаления, гарантирующие, что он не использует слишком много памяти системы. Если память необходима другим приложениям, система автоматически выполняет эти политики. Когда вызвано, эти политики удаляют некоторые элементы из кэша, минимизируя его объем потребляемой памяти.Можно добавить, удалить и запросить элементы в кэше от различных потоков, не имея необходимость блокировать кэш сами.
В отличие от этого
NSMutableDictionary
объект, кэш не копирует ключевые объекты, помещающиеся в него.
Эти функции необходимы для NSCache
класс, поскольку кэш может решить автоматически видоизменить себя асинхронно негласно, если это вызывают для высвобождения памяти.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.6 и позже.
-
Возвращает значение, связанное с данным ключом.
Объявление
Swift
func objectForKey(_
key
: AnyObject) -> AnyObject?Objective C
- (id)objectForKey:(id)
key
Параметры
key
Объект, идентифицирующий значение.
Возвращаемое значение
Значение связалось с
key
, илиnil
если никакое значение не связано сkey
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
-
Устанавливает значение указанного ключа в кэше.
Объявление
Swift
func setObject(_
obj
: AnyObject, forKeykey
: AnyObject)Objective C
- (void)setObject:(id)
obj
forKey:(id)key
Параметры
obj
Объект, который будет сохранен в кэше.
key
Ключ, с которым можно связать значение.
Обсуждение
В отличие от этого
NSMutableDictionary
объект, кэш не копирует ключевые объекты, помещающиеся в него.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
См. также
-
Устанавливает значение указанного ключа в кэше и связывает пару ключ/значение с указанной стоимостью.
Объявление
Swift
func setObject(_
obj
: AnyObject, forKeykey
: AnyObject, costnum
: Int)Objective C
- (void)setObject:(id)
obj
forKey:(id)key
cost:(NSUInteger)num
Параметры
obj
Объект сохранить в кэше.
key
Ключ, с которым можно связать значение.
num
Стоимость, с которой можно связать пару ключ/значение.
Обсуждение
cost
значение используется для вычислений суммы, охватывающей затраты всех объектов в кэше. Когда память ограничивается или когда общая стоимость кэша затмевает максимальную позволенную общую стоимость, кэш мог начать процесс замещения для удаления некоторых его элементов. Однако этот процесс замещения не находится в гарантируемом порядке. Как следствие, при попытке управлять себестоимостью для достижения некоторого определенного поведения, последствия могли бы быть вредны для программы. Как правило, очевидная стоимость является размером значения в байтах. Если та информация не легко доступна, Вы не должны проходить через проблему попытаться вычислить ее, поскольку выполнение так приведет к повышению стоимости использования кэша. Передача в0
для себестоимости, если у Вас иначе нет ничего полезного, чтобы передать, или просто использоватьsetObject:forKey:
метод, не требующий acost
значение, которое будет передано в.В отличие от этого
NSMutableDictionary
объект, кэш не копирует ключевые объекты, помещающиеся в него.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
См. также
-
Удаляет значение указанного ключа в кэше.
Объявление
Swift
func removeObjectForKey(_
key
: AnyObject)Objective C
- (void)removeObjectForKey:(id)
key
Параметры
key
Ключ, идентифицирующий значение, которое будет удалено.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
См. также
-
Освобождает кэш.
Объявление
Swift
func removeAllObjects()
Objective C
- (void)removeAllObjects
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
См. также
-
countLimit countLimit
СвойствоМаксимальное количество объектов кэш должно содержать.
Обсуждение
Значение по умолчанию
0
, что не означает предела.Это не строгий предел — если кэш пробегается через предел, объект в кэше мог бы быть выселен немедленно, позже, или возможно никогда, в зависимости от подробных данных реализации кэша.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
-
totalCostLimit totalCostLimit
СвойствоМаксимальная общая стоимость, которую может содержать кэш, прежде чем это начнет выселять объекты.
Обсуждение
Значение по умолчанию
0
, который не указывает предела.Когда Вы добавляете объект к кэшу, можно передать в указанной стоимости для объекта, такого как размер в байтах объекта. Если добавление этого объекта к кэшу заставляет общую стоимость кэша повышаться выше
totalCostLimit
, кэш может автоматически выселить объекты, пока его общая стоимость не падает нижеtotalCostLimit
. Порядок, в котором кэш выселяет объекты, не гарантируется.Это не строгий предел, и если кэш пробегается через предел, объект в кэше мог бы быть выселен немедленно, позже своевременно, или возможно никогда, все в зависимости от подробных данных реализации кэша.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
См. также
-
Булево значение, указывающее, выселит ли кэш автоматически отбрасываемые объекты содержания, содержание которых было отброшено.
Объявление
Swift
var evictsObjectsWithDiscardedContent: Bool
Objective C
@property BOOL evictsObjectsWithDiscardedContent
Обсуждение
Если
YES
true
, кэш выселит отбрасываемый объект содержания после того, как будет отброшено его содержание. ЕслиNO
false
, это не будет. Значение по умолчаниюYES
true
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
-
Делегат кэша.
Объявление
Swift
unowned(unsafe) var delegate: NSCacheDelegate?
Objective C
@property(assign) id< NSCacheDelegate > delegate
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.