Take a look at documentation and sample code.
An NSCache object is a collection-like container, or cache, that
stores key-value pairs, similar to the NSDictionary class.
Here is good explanation by Nick Zitzmann.
NSCache is similar to NSMutableDictionary, with the differences being:
1. It is guaranteed to be thread-safe.
2. It is much slower to access.
3. It may throw out objects from time to time. You can set costs and limits, but they're not guaranteed to be followed.
4. It is not toll-free bridged to anything in CoreFoundation.
5. You can't query the number of objects that are in the cache.
6. You can't enumerate a cache.
I can only recommend using NSCache to store objects you wouldn't care
about if they were arbitrarily destroyed. If the objects must not be
destroyed, or if access speed is an issue, then use
NSMutableDictionary instead.