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

时间:2017-02-13 05:12:16

标签: ios objective-c core-data memory-management

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

然后,在需要这些对象时,我们会使用NSUnarchiver将其转回NSArray

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

为什么会发生这种情况,或者我可以释放那些我显然不再使用的内存了?

修改

我做了以下没有成功:

[managedObjectContext refreshObject:myObject mergeChanges:NO];

1 个答案:

答案 0 :(得分:0)

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