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)objforKey:(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)objforKey:(id)keycost:(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: BoolObjective C
@property BOOL evictsObjectsWithDiscardedContentОбсуждение
Если
YEStrue, кэш выселит отбрасываемый объект содержания после того, как будет отброшено его содержание. ЕслиNOfalse, это не будет. Значение по умолчаниюYEStrue.Оператор импорта
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 и позже.
