Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[core] Fully clean up the core documentation by moving all class meth…

…od docs to the bottom of the files.
  • Loading branch information...
commit a808c78cd9af24841ce43a8c2568f06150ff428c 1 parent c24cf64
@jverkoey jverkoey authored
View
10 src/core/src/NIDataStructures.h
@@ -314,7 +314,7 @@ typedef void NILinkedListLocation;
*/
-#pragma mark Creating a Linked List /** @name Creating a Linked List */
+/** @name Creating a Linked List */
/**
* Convenience method for creating an autoreleased linked list.
@@ -342,7 +342,7 @@ typedef void NILinkedListLocation;
*/
-#pragma mark Querying a Linked List /** @name Querying a Linked List */
+/** @name Querying a Linked List */
/**
* Returns the number of objects currently in the linked list.
@@ -401,7 +401,7 @@ typedef void NILinkedListLocation;
*/
-#pragma mark Adding Objects /** @name Adding Objects */
+/** @name Adding Objects */
/**
* Append an object to the linked list.
@@ -413,7 +413,7 @@ typedef void NILinkedListLocation;
*/
-#pragma mark Removing Objects /** @name Removing Objects */
+/** @name Removing Objects */
/**
* Remove all objects from the linked list.
@@ -448,7 +448,7 @@ typedef void NILinkedListLocation;
*/
-#pragma mark Constant-Time Access /** @name Constant-Time Access */
+/** @name Constant-Time Access */
/**
* Search for an object in the linked list.
View
227 src/core/src/NIInMemoryCache.h
@@ -44,116 +44,191 @@
NILinkedList* _lruCacheObjects;
}
-#pragma mark Creating an In-Memory Cache /** @name Creating an In-Memory Cache */
+// Designated initializer.
+- (id)initWithCapacity:(NSUInteger)capacity;
+
+- (NSUInteger)count;
+
+- (void)storeObject:(id)object withName:(NSString *)name;
+- (void)storeObject:(id)object withName:(NSString *)name expiresAfter:(NSDate *)expirationDate;
+
+- (void)removeObjectWithName:(NSString *)name;
+- (void)removeAllObjects;
+
+- (id)objectWithName:(NSString *)name;
+- (BOOL)containsObjectWithName:(NSString *)name;
+- (NSDate *)dateOfLastAccessWithName:(NSString *)name;
+
+- (void)reduceMemoryUsage;
+
+
+// Subclassing
+
+- (void)willSetObject:(id)object withName:(NSString *)name previousObject:(id)previousObject;
+- (void)didSetObject:(id)object withName:(NSString *)name;
+- (void)willRemoveObject:(id)object withName:(NSString *)name;
+
+@end
+
/**
- * Initialize the cache with zero initial capacity.
+ * An in-memory cache for storing images with caps on the total number of pixels.
+ *
+ * When reduceMemoryUsage is called, the least recently used images are removed from the cache
+ * until the numberOfPixels is below maxNumberOfPixelsUnderStress.
+ *
+ * When an image is added to the cache that causes the memory usage to pass the max, the
+ * least recently used images are removed from the cache until the numberOfPixels is below
+ * maxNumberOfPixels.
+ *
+ * By default the image memory cache has no limit to its pixel count. You must explicitly
+ * set this value in your application.
+ *
+ * @attention If the cache is too small to fit the newly added image, then all images
+ * will end up being removed including the one being added.
+ *
+ * @see Nimbus::imageMemoryCache
+ * @see Nimbus::setImageMemoryCache:
*/
-- (id)init;
+@interface NIImageMemoryCache : NIMemoryCache {
+@private
+ NSUInteger _numberOfPixels;
+
+ NSUInteger _maxNumberOfPixels;
+ NSUInteger _maxNumberOfPixelsUnderStress;
+}
+
+@property (nonatomic, readonly, assign) NSUInteger numberOfPixels;
+@property (nonatomic, readwrite, assign) NSUInteger maxNumberOfPixels;
+@property (nonatomic, readwrite, assign) NSUInteger maxNumberOfPixelsUnderStress;
+
+@end
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+/**@}*/// End of In-Memory Cache //////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+/** @name Creating an In-Memory Cache */
/**
- * Designated initializer. Initialize the cache with an initial capacity.
+ * Initializes a newly allocated cache with the given capacity.
*
- * Use a best guess to avoid having the internal data structure reallocate its memory repeatedly
- * - at least up up to a certain point - as the cache grows.
+ * @returns An in-memory cache initialized with the given capacity.
+ * @fn NIMemoryCache::initWithCapacity:
*/
-- (id)initWithCapacity:(NSUInteger)capacity;
-#pragma mark Storing Objects in the Cache /** @name Storing Objects in the Cache */
+/** @name Storing Objects in the Cache */
/**
- * Store an object in the cache.
- *
- * @param object The object being stored in the cache.
- * @param name The name used as a key to store this object.
+ * Stores an object in the cache.
*
* The object will be stored without an expiration date. The object will stay in the cache until
* it's bumped out due to the cache's memory limit.
+ *
+ * @param object The object being stored in the cache.
+ * @param name The name used as a key to store this object.
+ * @fn NIMemoryCache::storeObject:withName:
*/
-- (void)storeObject:(id)object withName:(NSString *)name;
/**
- * Store an object in the cache with an expiration date.
- *
- * @param object The object being stored in the cache.
- * @param name The name used as a key to store this object.
- * @param expirationDate A date after which this object is no longer valid in the cache.
+ * Stores an object in the cache with an expiration date.
*
* If an object is stored with an expiration date that has already passed then the object will
* not be stored in the cache and any existing object will be removed. The rationale behind this
* is that the object would be removed from the cache the next time it was accessed anyway.
+ *
+ * @param object The object being stored in the cache.
+ * @param name The name used as a key to store this object.
+ * @param expirationDate A date after which this object is no longer valid in the cache.
+ * @fn NIMemoryCache::storeObject:withName:expiresAfter:
*/
-- (void)storeObject:(id)object withName:(NSString *)name expiresAfter:(NSDate *)expirationDate;
-#pragma mark Removing Objects from the Cache /** @name Removing Objects from the Cache */
+/** @name Removing Objects from the Cache */
/**
- * Remove an object in the cache.
+ * Removes an object from the cache.
*
* @param name The name used as a key to store this object.
+ * @fn NIMemoryCache::removeObjectWithName:
*/
-- (void)removeObjectWithName:(NSString *)name;
/**
- * Remove all objects from the cache, regardless of expiration dates.
+ * Removes all objects from the cache, regardless of expiration dates.
*
* This will completely clear out the cache and all objects in the cache will be released.
+ *
+ * @fn NIMemoryCache::removeAllObjects
*/
-- (void)removeAllObjects;
-#pragma mark Accessing Objects in the Cache /** @name Accessing Objects in the Cache */
+/** @name Accessing Objects in the Cache */
/**
- * Retrieve an object from the cache.
+ * Retrieves an object from the cache.
*
* If the object has expired then the object will be removed from the cache and nil will be
* returned.
+ *
+ * @returns The object stored in the cache. The object is retained and autoreleased to
+ * ensure that it survives this run loop if you then remove it from the cache.
+ * @fn NIMemoryCache::objectWithName:
*/
-- (id)objectWithName:(NSString *)name;
/**
- * Determine whether an object is in the cache or not without modifying the access time.
+ * Returns a Boolean value that indicates whether an object with the given name is present
+ * in the cache.
*
- * This is useful if you simply want to check the cache for the existence of an object.
+ * Does not update the access time of the object.
*
- * If the object has expired then the object will be removed from the cache and nil will be
+ * If the object has expired then the object will be removed from the cache and NO will be
* returned.
+ *
+ * @returns YES if an object with the given name is present in the cache and has not expired,
+ * otherwise NO.
+ * @fn NIMemoryCache::containsObjectWithName:
*/
-- (BOOL)hasObjectWithName:(NSString *)name;
/**
- * Retrieve the data that the object with the given name was last accessed.
+ * Returns the date that the object with the given name was last accessed.
*
- * This will not update the access time of the object.
+ * Does not update the access time of the object.
*
* If the object has expired then the object will be removed from the cache and nil will be
* returned.
+ *
+ * @returns The last access date of the object if it exists and has not expired, nil
+ * otherwise.
+ * @fn NIMemoryCache::dateOfLastAccessWithName:
*/
-- (NSDate *)dateOfLastAccessWithName:(NSString *)name;
-#pragma mark Reducing Memory Usage Explicitly /** @name Reducing Memory Usage Explicitly */
+/** @name Reducing Memory Usage Explicitly */
/**
- * Remove all expired objects from the cache.
+ * Removes all expired objects from the cache.
+ *
+ * Subclasses may add additional functionality to this implementation.
+ * Subclasses should call super in order to prune expired objects.
*
- * Subclasses may add additional functionality to this implementation and should generally
- * call super.
+ * This will be called when <code>UIApplicationDidReceiveMemoryWarningNotification</code>
+ * is posted.
*
- * This will be called when UIApplicationDidReceiveMemoryWarningNotification is posted.
+ * @fn NIMemoryCache::reduceMemoryUsage
*/
-- (void)reduceMemoryUsage;
-#pragma mark Querying an In-Memory Cache /** @name Querying an In-Memory Cache */
+/** @name Querying an In-Memory Cache */
/**
- * The number of objects stored in this cache.
+ * Returns the number of objects currently in the cache.
+ *
+ * @returns The number of objects currently in the cache.
+ * @fn NIMemoryCache::count
*/
-@property (nonatomic, readonly) NSUInteger count;
/**
@@ -162,92 +237,64 @@
* The following methods are provided to aid in subclassing and are not meant to be
* used externally.
*/
-#pragma mark Subclassing
/**
* An object is about to be stored in the cache.
*
- * @param object The object to be stored in the cache.
+ * @param object The object that is about to be stored in the cache.
* @param name The cache name for the object.
* @param previousObject The object previously stored in the cache. This may be the
* same as object.
+ * @fn NIMemoryCache::willSetObject:withName:previousObject:
*/
-- (void)willSetObject:(id)object withName:(NSString *)name previousObject:(id)previousObject;
/**
* An object has been stored in the cache.
*
* @param object The object that was stored in the cache.
* @param name The cache name for the object.
+ * @fn NIMemoryCache::didSetObject:withName:
*/
-- (void)didSetObject:(id)object withName:(NSString *)name;
/**
* An object is about to be removed from the cache.
*
* @param object The object about to removed from the cache.
* @param name The cache name for the object about to be removed.
+ * @fn NIMemoryCache::willRemoveObject:withName:
*/
-- (void)willRemoveObject:(id)object withName:(NSString *)name;
-
-@end
-/**
- * An in-memory cache for storing images with caps on the total number of pixels.
- *
- * When reduceMemoryUsage is called, the least recently used images are removed from the cache
- * until the numberOfPixels is below maxNumberOfPixelsUnderStress.
- *
- * When an image is added to the cache that causes the memory usage to pass the max, the
- * least recently used images are removed from the cache until the numberOfPixels is below
- * maxNumberOfPixels.
- *
- * By default the image memory cache has no limit to its pixel count. You must explicitly
- * set this value in your application.
- *
- * @attention If the cache is too small to fit the newly added image, then all images
- * will end up being removed including the one being added.
- *
- * @see Nimbus::imageMemoryCache
- * @see Nimbus::setImageMemoryCache:
- */
-@interface NIImageMemoryCache : NIMemoryCache {
-@private
- NSUInteger _numberOfPixels;
-
- NSUInteger _maxNumberOfPixels;
- NSUInteger _maxNumberOfPixelsUnderStress;
-}
-
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// NIImageMemoryCache
-#pragma mark Querying an In-Memory Image Cache /** @name Querying an In-Memory Image Cache */
+/** @name Querying an In-Memory Image Cache */
/**
- * The total number of pixels being stored in the cache.
+ * Returns the total number of pixels being stored in the cache.
+ *
+ * @returns The total number of pixels being stored in the cache.
+ * @fn NIImageMemoryCache::numberOfPixels
*/
-@property (nonatomic, readonly, assign) NSUInteger numberOfPixels;
-#pragma mark Setting the Maximum Number of Pixels /** @name Setting the Maximum Number of Pixels */
+/** @name Setting the Maximum Number of Pixels */
/**
* The maximum number of pixels this cache may ever store.
*
* Defaults to 0, which is special cased to represent an unlimited number of pixels.
+ *
+ * @returns The maximum number of pixels this cache may ever store.
+ * @fn NIImageMemoryCache::maxNumberOfPixels
*/
-@property (nonatomic, readwrite, assign) NSUInteger maxNumberOfPixels;
/**
* The maximum number of pixels this cache may store after a call to reduceMemoryUsage.
*
* Defaults to 0, which is special cased to represent an unlimited number of pixels.
+ *
+ * @returns The maximum number of pixels this cache may store after a call
+ * to reduceMemoryUsage.
+ * @fn NIImageMemoryCache::maxNumberOfPixelsUnderStress
*/
-@property (nonatomic, readwrite, assign) NSUInteger maxNumberOfPixelsUnderStress;
-
-@end
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-/**@}*/// End of In-Memory Cache //////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////////////////////////
View
6 src/core/src/NIInMemoryCache.m
@@ -108,7 +108,7 @@ - (void)dealloc {
///////////////////////////////////////////////////////////////////////////////////////////////////
- (id)init {
- return [self initWithCapacity:1];
+ return [self initWithCapacity:0];
}
@@ -274,12 +274,12 @@ - (id)objectWithName:(NSString *)name {
}
}
- return object;
+ return [[object retain] autorelease];
}
///////////////////////////////////////////////////////////////////////////////////////////////////
-- (BOOL)hasObjectWithName:(NSString *)name {
+- (BOOL)containsObjectWithName:(NSString *)name {
NIMemoryCacheInfo* info = [self cacheInfoForName:name];
if ([info hasExpired]) {
View
244 src/core/src/NIOperations.h
@@ -24,21 +24,14 @@
#endif
/**
- * For common NSOperation implementations.
+ * For writing code that runs concurrently.
*
* @ingroup NimbusCore
* @defgroup Operations Operations
*
- * Some tasks take time to complete and are best done asynchronously. This collection of
- * operations is meant to provide a minimum set of functionality for common tasks to be
- * performed asynchronously.
- */
-
-/**
- * For crafting operations.
- *
- * @ingroup Operations
- * @defgroup Crafting-Operations Crafting Operations
+ * This collection of NSOperation implementations is meant to provide a set of common
+ * operations that might be used in an application to offload complex processing to a separate
+ * thread.
*/
@protocol NIOperationDelegate;
@@ -46,11 +39,14 @@
/**
* A base implementation of an NSOperation that supports traditional delegation and blocks.
*
- * @ingroup Crafting-Operations
+ *
+ * <h2>Subclassing</h2>
*
* A subclass should call the operationDid* methods to notify the delegate on the main thread
* of changes in the operation's state. Calling these methods will notify the delegate and the
* blocks if provided.
+ *
+ * @ingroup Operations
*/
@interface NIOperation : NSOperation {
@private
@@ -71,42 +67,140 @@
#endif // #if NS_BLOCKS_AVAILABLE
}
-#pragma mark Delegation /** @name Delegation */
+@property (readwrite, assign) id<NIOperationDelegate> delegate;
+@property (readonly, retain) NSError* lastError;
+@property (readwrite, assign) NSInteger tag;
+
+
+#if NS_BLOCKS_AVAILABLE
+
+@property (readwrite, copy) NIBasicBlock didStartBlock;
+@property (readwrite, copy) NIBasicBlock didFinishBlock;
+@property (readwrite, copy) NIErrorBlock didFailWithErrorBlock;
+@property (readwrite, copy) NIBasicBlock willFinishBlock;
+
+#endif // #if NS_BLOCKS_AVAILABLE
+
+- (void)operationDidStart;
+- (void)operationDidFinish;
+- (void)operationDidFailWithError:(NSError *)error;
+- (void)operationWillFinish;
+
+@end
+
+
+/**
+ * An operation that reads a file from disk.
+ *
+ * Provides asynchronous file reading support when added to an NSOperationQueue.
+ *
+ * It is recommended to add this operation to a serial NSOperationQueue to avoid overlapping
+ * disk read attempts. This will noticeably improve performance when loading many files
+ * from disk at once.
+ *
+ * @ingroup Operations
+ */
+@interface NIReadFileFromDiskOperation : NIOperation {
+@private
+ // [in]
+ NSString* _pathToFile;
+
+ // [out]
+ NSData* _data;
+ id _processedObject;
+}
+
+// Designated initializer.
+- (id)initWithPathToFile:(NSString *)pathToFile;
+
+@property (readwrite, copy) NSString* pathToFile;
+@property (readonly, retain) NSData* data;
+@property (readwrite, retain) id processedObject;
+
+@end
+
+
+/**
+ * The delegate protocol for an NSOperation.
+ *
+ * @ingroup Operations
+ */
+@protocol NIOperationDelegate <NSObject>
+@optional
+
+/** @name [NIOperationDelegate] State Changes */
+
+/** The operation has started executing. */
+- (void)operationDidStart:(NSOperation *)operation;
+
+/**
+ * The operation is about to complete successfully.
+ *
+ * This will not be called if the operation fails.
+ *
+ * This will be called from within the operation's runloop and must be thread safe.
+ */
+- (void)operationWillFinish:(NSOperation *)operation;
+
+/**
+ * The operation has completed successfully.
+ *
+ * This will not be called if the operation fails.
+ */
+- (void)operationDidFinish:(NSOperation *)operation;
+
+/**
+ * The operation failed in some way and has completed.
+ *
+ * operationDidFinish: will not be called.
+ */
+- (void)operationDidFail:(NSOperation *)operation withError:(NSError *)error;
+
+@end
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// NIOperation
+
+/** @name Delegation */
/**
* The delegate through which changes are notified for this operation.
*
* All delegate methods are performed on the main thread.
+ *
+ * @fn NIOperation::delegate
*/
-@property (readwrite, assign) id<NIOperationDelegate> delegate;
-#pragma mark Post-Operation Properties /** @name Post-Operation Properties */
+/** @name Post-Operation Properties */
/**
* The error last passed to the didFailWithError notification.
+ *
+ * @fn NIOperation::lastError
*/
-@property (readonly, retain) NSError* lastError;
-#pragma mark Identification /** @name Identification */
+/** @name Identification */
/**
* A simple tagging mechanism for identifying operations.
+ *
+ * @fn NIOperation::tag
*/
-@property (readwrite, assign) NSInteger tag;
#if NS_BLOCKS_AVAILABLE
-
-#pragma mark Blocks /** @name Blocks */
+/** @name Blocks */
/**
* The operation has started executing.
*
* Performed on the main thread.
+ *
+ * @fn NIOperation::didStartBlock
*/
-@property (readwrite, copy) NIBasicBlock didStartBlock;
/**
* The operation has completed successfully.
@@ -114,8 +208,9 @@
* This will not be called if the operation fails.
*
* Performed on the main thread.
+ *
+ * @fn NIOperation::didFinishBlock
*/
-@property (readwrite, copy) NIBasicBlock didFinishBlock;
/**
* The operation failed in some way and has completed.
@@ -123,8 +218,9 @@
* didFinishBlock will not be executed.
*
* Performed on the main thread.
+ *
+ * @fn NIOperation::didFailWithErrorBlock
*/
-@property (readwrite, copy) NIErrorBlock didFailWithErrorBlock;
/**
* The operation is about to complete successfully.
@@ -132,9 +228,9 @@
* This will not be called if the operation fails.
*
* Performed in the operation's thread.
+ *
+ * @fn NIOperation::willFinishBlock
*/
-@property (readwrite, copy) NIBasicBlock willFinishBlock;
-
#endif // #if NS_BLOCKS_AVAILABLE
@@ -144,69 +240,54 @@
* The following methods are provided to aid in subclassing and are not meant to be
* used externally.
*/
-#pragma mark Subclassing
/**
* On the main thread, notify the delegate that the operation has begun.
+ *
+ * @fn NIOperation::operationDidStart
*/
-- (void)operationDidStart;
/**
* On the main thread, notify the delegate that the operation has finished.
+ *
+ * @fn NIOperation::operationDidFinish
*/
-- (void)operationDidFinish;
/**
* On the main thread, notify the delegate that the operation has failed.
+ *
+ * @fn NIOperation::operationDidFailWithError:
*/
-- (void)operationDidFailWithError:(NSError *)error;
/**
* In the operation's thread, notify the delegate that the operation will finish successfully.
- */
-- (void)operationWillFinish;
-
-@end
-
-
-/**
- * An operation that reads a file from disk.
- *
- * @ingroup Operations
*
- * Provides asynchronous file reading support when added to an NSOperationQueue.
- *
- * It is recommended to add this operation to a serial NSOperationQueue to avoid overlapping
- * disk read attempts. This will noticeably improve performance when loading many files
- * from disk at once.
+ * @fn NIOperation::operationWillFinish
*/
-@interface NIReadFileFromDiskOperation : NIOperation {
-@private
- // [in]
- NSString* _pathToFile;
- // [out]
- NSData* _data;
- id _processedObject;
-}
-#pragma mark Creating an Operation /** @name Creating an Operation */
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// NIReadFileFromDiskOperation
+
+/** @name Creating an Operation */
/**
- * Designated initializer.
+ * Initializes a newly allocated "read from disk" operation with a given path to a file to be read.
+ *
+ * @fn NIReadFileFromDiskOperation::initWithPathToFile:
*/
-- (id)initWithPathToFile:(NSString *)pathToFile;
-#pragma mark Configuring the Operation /** @name Configuring the Operation */
+/** @name Configuring the Operation */
/**
* The path to the file that should be read from disk.
+ *
+ * @fn NIReadFileFromDiskOperation::pathToFile
*/
-@property (readwrite, copy) NSString* pathToFile;
-#pragma mark Operation Results /** @name Operation Results */
+/** @name Operation Results */
/**
* The data that was read from disk.
@@ -214,8 +295,8 @@
* Will be nil if the data couldn't be read.
*
* @sa NIOperation::lastError
+ * @fn NIReadFileFromDiskOperation::data
*/
-@property (readonly, retain) NSData* data;
/**
* An object created from the data that was read from disk.
@@ -223,48 +304,5 @@
* Will be nil if the data couldn't be read.
*
* @sa NIOperation::lastError
+ * @fn NIReadFileFromDiskOperation::processedObject
*/
-@property (readwrite, retain) id processedObject;
-
-@end
-
-
-/**
- * The delegate protocol for an NSOperation.
- *
- * @ingroup Operations
- */
-@protocol NIOperationDelegate <NSObject>
-@optional
-
-#pragma mark State Changes /** @name [NIOperationDelegate] State Changes */
-
-/**
- * The operation has started executing.
- */
-- (void)operationDidStart:(NSOperation *)operation;
-
-/**
- * The operation is about to complete successfully.
- *
- * This will not be called if the operation fails.
- *
- * This will be called from within the operation's runloop and must be thread safe.
- */
-- (void)operationWillFinish:(NSOperation *)operation;
-
-/**
- * The operation has completed successfully.
- *
- * This will not be called if the operation fails.
- */
-- (void)operationDidFinish:(NSOperation *)operation;
-
-/**
- * The operation failed in some way and has completed.
- *
- * operationDidFinish will not be called.
- */
-- (void)operationDidFail:(NSOperation *)operation withError:(NSError *)error;
-
-@end
View
6 src/core/unittests/NIMemoryCacheTests.m
@@ -237,9 +237,9 @@ - (void)testHasObject {
id cacheObject1 = [NSArray array];
[cache storeObject:cacheObject1 withName:@"obj1"];
- STAssertTrue([cache hasObjectWithName:@"obj1"], @"obj1 should exist in the cache.");
+ STAssertTrue([cache containsObjectWithName:@"obj1"], @"obj1 should exist in the cache.");
- STAssertFalse([cache hasObjectWithName:@"obj2"], @"obj2 should not exist in the cache.");
+ STAssertFalse([cache containsObjectWithName:@"obj2"], @"obj2 should not exist in the cache.");
}
@@ -253,7 +253,7 @@ - (void)testAccessTimeModifications {
NSDate* lastAccessTime = [cache dateOfLastAccessWithName:@"obj1"];
// Does not update the access time.
- [cache hasObjectWithName:@"obj1"];
+ [cache containsObjectWithName:@"obj1"];
STAssertEquals(lastAccessTime, [cache dateOfLastAccessWithName:@"obj1"],
@"Access time should not have been modified.");
Please sign in to comment.
Something went wrong with that request. Please try again.