I recently changed an image cache in one of my projects to use NSCache instead of NSMutableDictionary. I found that when my application was sent to the background (even for a few seconds), the cache was cleared and the images had to be reloaded on resume. This was not suitable for my application since the initial image request was costly, so I went back to the initial NSMutableDictionary implementation.