NSCache 释放对象,即使有对它们的强引用?

NSCache releases objects even when there are strong references to them?

我已经设置了一个基本的 NSCache 并且正在存储 NSObject 子类对象。我观察到这些对象从缓存中释放(在应用程序后台运行时),即使有 1 个以上的其他强引用(使用内存调试器验证)。我在这里错过了什么吗?据我了解, NSCache 只会在没有剩余引用的情况下释放内存压力下的对象。

我认为您看到 NSCache 没有跟踪所有权图来查看释放对象是否实际上会 节省内存。它根据自己的本地启发式方法进行发布。

考虑在这种情况下使用 NSCache 可能更有意义。如果有其他强引用,缓存的拥有者不负责对象的创建吗?这是您要缓存的查找吗?

我只在对象创建成本高昂的情况下使用 NSCache,但可以随时完成并且不会影响我的对象图。