In my code, I use a singleton object as a central point in my app to load and cache images the app frequently needs, so I don’t have to do resource-intensive memory allocation each time I load an image.
But there are times during the execution of my app where memory usage gets intense and I would like to release the cached image data. Currently, I’m just releasing the UIImage instances from my singleton when I get a memory warning.
I would prefer, however, to be able to release the entire singleton object. Is that possible? If so, how?
Of course it is. Although it’s rather likely that the memory usage of this object is negligible compared to the images.
By the nature of a singleton, you need to have an accessor for it, where you will create it if it does not currently exist:
You just need to add another that you call when you want to destroy it:
If you keep references to it around elsewhere you’ll have trouble; don’t do that. If you access from multiple threads you’ll need to synchronize. Otherwise, it’s pretty straightforward — the getter will recreate when you next need it.