我已经设置了基本NSCache
并存储了NSObject
子类对象。我观察这些对象是从缓存中释放的(在应用程序背景化时),即使有超过1个其他强引用(通过内存调试器验证)。我在这里错过了什么吗?据我所知,NSCache
只会在没有剩余引用的情况下释放内存压力下的对象。
答案 0 :(得分:0)
我认为您看到NSCache没有跟踪所有权图,以查看释放对象是否会实际节省内存。它基于它自己的本地启发式发布。
考虑在这种情况下使用NSCache可能更有意义。如果还有其他强引用,缓存的所有者是否不负责创建对象?它是您尝试缓存的查找吗?
在对象创建很昂贵的情况下,我只使用了NSCache,但可以随时进行,不会影响我的对象图。