这是我一直想问的问题。当我在 Profiler 中运行 iOS 应用程序寻找分配问题时,我发现 NSManagedObject 在使用和显示后很长时间仍留在内存中,并且召回的 UIViewController 已被释放。当然当再次分配UIViewController时,数量并没有增加,说明没有泄漏,CoreData有某种对象重用。
如果我有一个名为“mobjc”的 MyManagedObject 类,那么在分析器中我可以看到越来越多的:
MyManagedObject_mobjc_
数量可能会有所不同,对于少量数据,例如 sqllite 中的 100 个对象,它会增长到该限制并保持在那里。
但似乎有时在应用程序生命周期中对象会被释放,所以我认为 CoreData 本身正在做某种内存优化。似乎没有保留整个对象,而是保留了它的“错误”(请原谅我的英语:-)),因为活动字节大小很小。即使是棘手的很多故障对象也会占用内存。
但在这一点上,我想要一些确认:
- CoreData 真的在内存中管理和优化对象吗?
- 我能做些什么来帮助我的应用程序保留尽可能少的对象吗?
- 与上述有关,我真的需要处理这个问题吗?
- 您是否有一些链接,可能来自 Apple,其中解释了这个特定主题?
也许是相关的,我用于测试的应用程序依赖于 ARC 和 iOS 5.1。
谢谢