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

问题描述:

我有Core Data属性是Binary Data类型。我们使用NSArchiver归档自定义对象的NSArray,然后将其保存在Core Data中。核心数据二进制数据类型加载不释放内存

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

问题在于它耗尽了大量的内存,而且由于某种原因,我永远无法获得它。解除数据存档后,检查一些对象,然后将NSArrayNSData对象设置为零,则该内存永远不会恢复。对许多Core Data实体执行相同的操作会导致永远不会返回的巨大内存使用量。

为什么会出现这种情况,或者我可以释放那些我明显不再使用的内存?

编辑:

我已经做了没有成功如下:

[managedObjectContext refreshObject:myObject mergeChanges:NO]; 
+0

只需添加其他信息。不是将NSArray归档为数据,而是使用coredata中可用的TRANSFORMABLE数据类型。对于例子http://stackoverflow.com/questions/8682324/insert-nsdictionary-into-coredata/25891673#25891673 –

+0

你有没有尝试在'@ autoreleasepool'块中执行该任务? – KrishnaCA

+0

@KrishnaCA是的,但这似乎没有帮助。 –

我得到了同样的问题。当我使用NSUnarchiver解压数据时,它会产生大量的临时内存,并且临时内存不会被释放。 @KrishnaCA说,我通过添加@ autoreleasepool解决了这个问题。你添加的代码不合适吗?如果你显示简单的代码,这有助于解决问题。

+0

你在哪里添加它?围绕你使用'NSUnarchiver'的代码? –

+0

从NSUnarchiver开始使用,到最终使用NSUnarchiver获得的数据。 –