When user switches between view controllers via menu, I want to cache them if he has enough memory. In order to do so, I want to use NSCache
to store many UIViewControllers
.
However, I'm not sure how I can tell NSCache
that current object is currently used and should not be removed.
E.g, when I run app, load few view controllers and quit the app, NSCache
automatically delete all viewControllers
(which makes sense - app will be able to stay longer in the foreground). However, it also removes currently displayed view controller which is not what I wanted.
How can I mark particular object as not-removable?
Cache is an associative memory: you can't strongly decide when to remove a cached item. Instead you can change the cache policy.
From the documentation:
You can do like this :
The cache will be removed when the application goes to background. So when the application goes background store the data from cache to {NSUserDefaults} and when application didBecomeActive reassign the value to cache.