【问题标题】:NSCache and backgroundNSCache 和背景
【发布时间】:2018-12-21 04:40:13
【问题描述】:

我注意到当应用程序进入后台时,NSCache 会驱逐它的所有对象。这是预期的行为吗?有没有办法避免它?

我希望它在设备内存不足时驱逐对象,而不是在应用程序进入后台时立即驱逐对象。

您知道任何有效的替代方案吗?

【问题讨论】:

    标签: ios nscache


    【解决方案1】:

    在我的例子中,当存储在 NSCache 中的对象不符合 NSDiscardableContent 协议时,就会发生这种情况。当我添加上述协议时,应用程序进入后台时对对象的驱逐消失了。

    此外,基于 NSCache.m 的来源,我发现 here,不符合 NSDiscardableContent 协议的对象在运行时永远不会被删除,即使应用程序需要更多内存并且应该驱逐它的一些元素。也许这就是当应用程序进入后台时非 NSDiscardableContent 对象被驱逐的原因,因为这是驱逐它们的好时机。

    【讨论】:

      【解决方案2】:

      NSCache 仍然很荒谬。从 SDK 的第一天开始,我就一直是一名 iOS 开发人员,直到今天,我才发现这个有用的帖子。

      这些年来,我认为它的工作方式与任何普通缓存一样,但不!我再也不会使用它了。

      【讨论】:

        【解决方案3】:

        此相关帖子中的 cmets 表示应用程序进入后台时会清除 NSCache。 NSCache is not evicting data

        【讨论】:

          猜你喜欢
          • 2018-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-21
          • 2011-07-22
          • 2013-01-03
          • 2013-02-09
          • 2012-04-29
          相关资源
          最近更新 更多