1

当用户通过菜单在视图控制器之间切换时,如果他有足够的内存,我想缓存它们。为了做到这一点,我想使用NSCache存储许多UIViewControllers.

但是,我不确定如何判断NSCache当前对象当前已被使用且不应被删除。例如,当我运行应用程序时,加载几个视图控制器并退出应用程序,NSCache自动删除所有应用程序viewControllers(这是有道理的 - 应用程序将能够在前台停留更长时间)。但是,它也会删除当前显示的视图控制器,这不是我想要的。

如何将特定对象标记为不可移除?

4

2 回答 2

2

你可以这样做:

当应用程序进入后台时,缓存将被删除。因此,当应用程序进入后台时,将缓存中的数据存储到 {NSUserDefaults} 并且当应用程序 didBecomeActive 将值重新分配给缓存时。

于 2013-04-09T13:14:10.793 回答
0

缓存是一种关联内存:您无法强烈决定何时删除缓存项。相反,您可以更改缓存策略。

从文档中:

默认情况下,如果缓存中的 NSDiscardableContent 对象的内容被丢弃,则会自动从缓存中删除,尽管可以更改此自动删除策略。如果一个 NSDiscardableContent 对象被放入缓存,缓存会在它被移除时调用discardContentIfPossible。

于 2013-01-10T16:27:45.503 回答