核心数据二进制数据类型加载不释放内存



我有一个Binary Data类型的Core Data属性。我们使用NSArchiver来存档自定义对象的NSArray,然后将其保存在 Core Data .

然后,当需要这些对象时,我们使用NSUnarchiver将其变回NSArray

这样做的问题是它占用了大量内存,由于某种原因,我永远无法将其取回。取消存档数据,检查某些对象,然后将NSArrayNSData对象设置为 nil 后,该内存将永远不会恢复。对许多Core Data实体执行相同的操作会导致永远不会返回的大量内存使用量。

是否有理由发生这种情况,或者我可以释放我显然不再使用的内存的方法?

编辑:

我做了以下事情但没有成功:

[managedObjectContext refreshObject:myObject mergeChanges:NO];

我遇到了同样的问题。当我使用 NSUnarchiver 解压缩数据时,它会生成大量临时内存,并且不会释放临时内存。我通过添加@autoreleasepool解决了它,就像@KrishnaCA所说的那样。它不适合您添加的代码吗?如果显示简单代码,则有助于解决问题。

最新更新