MBFilesystemCache Class Reference

Inherits from MBThreadsafeCache : NSObject
Conforms to MBFilesystemCacheDelegate
Declared in MBFilesystemCache.h

Overview

An object cache implementation capable of persisting cache objects to the filesystem.

Utilize the methods provided by the MBThreadsafeCache superclass to access data stored in an MBFilesystemCache if you do not care whether or not a cache object is loaded into memory when it is requested.

Note: Classes that wish to subclass MBFilesystemCache should refer to the internal MBFilesystemCache(ForSubclassEyesOnly) methods declared in the header file MBFilesystemCache+Subclassing.h.

Object lifecycle

– initWithName:

Initializes the receiver with the given name.

- (nonnull instancetype)initWithName:(nonnull NSString *)name

Parameters

name

The name of the filesystem cache. Must not be nil, and must not contain any characters that are illegal filename characters in the local filesystem. This name will be used in the path of the directory in which the receiver’s files will be stored.

Return Value

The receiver.

Discussion

The receiver will act as its own delegate unless the cacheDelegate property is explicitly set.

Warning: Do not use the same cache name for more than one MBFilesystemCache at any given time. Unpredictable results will occur if you do.

Declared In

MBFilesystemCache.h

– initWithName:cacheDelegate:

Initializes the receiver with the given name.

- (nonnull instancetype)initWithName:(nonnull NSString *)name cacheDelegate:(nonnull id)delegate

Parameters

name

The name of the filesystem cache. Must not be nil, and must not contain any characters that are illegal filename characters in the local filesystem. This name will be used in the path of the directory in which the receiver’s files will be stored.

delegate

The MBFilesystemCacheDelegate that will be used as the receiver’s delegate. Must not be nil.

Return Value

The receiver.

Discussion

Warning: Do not use the same cache name for more than one MBFilesystemCache at any given time. Unpredictable results will occur if you do.

Declared In

MBFilesystemCache.h

Cache properties

  readQueue

Returns the operation queue that will be used for performing filesystem cache read operations.

@property (nonnull, nonatomic, readonly) MBCacheReadQueue *readQueue

Declared In

MBFilesystemCache.h

  writeQueue

Returns the operation queue that will be used for performing filesystem cache write operations.

@property (nonnull, nonatomic, readonly) MBCacheWriteQueue *writeQueue

Declared In

MBFilesystemCache.h

  cacheName

Returns the name of the cache, which is used to determine the directory in which cache files are stored. This is name provided when the receiver is initialized.

@property (nonnull, nonatomic, readonly) NSString *cacheName

Declared In

MBFilesystemCache.h

  cacheDelegate

Returns the MBFilesystemCacheDelegate used by the receiver.

@property (nullable, nonatomic, weak) id cacheDelegate

Declared In

MBFilesystemCache.h

  maxAgeOfCacheFiles

Returns the maximum age of the files in the cache, in seconds. Files that are older than this value will not be used by the cache and will eventually be deleted. This defaults to the value of the constant kMBFilesystemCacheDefaultMaxAge (currently, 36 hours).

@property (nonatomic, assign) NSTimeInterval maxAgeOfCacheFiles

Declared In

MBFilesystemCache.h

Checking for objects in the cache

– isKeyInCache:

Determines whether the specified cache key represents an object currently in the cache.

- (BOOL)isKeyInCache:(nonnull id)key

Parameters

key

The cache key to check.

Return Value

YES if there is an object associated with key in either the filesystem or the memory cache; NO otherwise.

Discussion

The filesystem cache and memory cache are both checked for the presence of an object with the specified key.

Declared In

MBFilesystemCache.h

– isKeyInMemoryCache:

Determines whether the specified cache key represents an object currently in the memory cache.

- (BOOL)isKeyInMemoryCache:(nonnull id)key

Parameters

key

The cache key to check.

Return Value

YES if there is an object associated with key in the memory cache; NO otherwise.

Declared In

MBFilesystemCache.h

– isKeyInFilesystemCache:

Determines whether the specified cache key represents an object currently in the filesystem cache.

- (BOOL)isKeyInFilesystemCache:(nonnull id)key

Parameters

key

The cache key to check.

Return Value

YES if there is an object associated with key in the filesystem cache; NO otherwise.

Declared In

MBFilesystemCache.h

Retrieving objects from the cache

– objectForKeyInMemoryCache:

Retrieves an object from the memory cache, if it is there.

- (nullable id)objectForKeyInMemoryCache:(nonnull id)key

Parameters

key

The cache key of the object to retrieve.

Return Value

The object instance, or nil if it was not in the cache.

Discussion

Note: This method does not attempt to load an object from the filesystem cache. Use the objectForKey: method (declared by the MBThreadsafeCache superclass) to retrieve objects regardless of whether they’re in the memory or filesystem caches.

Declared In

MBFilesystemCache.h

Managing the filesystem cache

– clearFilesystemCache

Deletes all of the cache objects currently in the filesystem cache.

- (void)clearFilesystemCache

Discussion

The memory cache is not affected by calls to this method.

Declared In

MBFilesystemCache.h

– purgeCacheFilesOlderThan:

Deletes all cache files older than a certain age.

- (void)purgeCacheFilesOlderThan:(NSTimeInterval)ageInSeconds

Parameters

ageInSeconds

The maximum age allowed for cache files. Files older than this age will be deleted.

Discussion

The memory cache is not affected by calls to this method.

Declared In

MBFilesystemCache.h

– purgeOutOfDateCacheFiles

Deletes all cache files older than the number of seconds specified by the maxAgeOfCacheFiles property.

- (void)purgeOutOfDateCacheFiles

Discussion

The memory cache is not affected by calls to this method.

Declared In

MBFilesystemCache.h