我有一个Binary Data
类型的Core Data
属性。我们使用NSArchiver
来存档自定义对象的NSArray
,然后将其保存在 Core Data
.
然后,当需要这些对象时,我们使用NSUnarchiver
将其变回NSArray
。
这样做的问题是它占用了大量内存,由于某种原因,我永远无法将其取回。取消存档数据,检查某些对象,然后将NSArray
或NSData
对象设置为 nil 后,该内存将永远不会恢复。对许多Core Data
实体执行相同的操作会导致永远不会返回的大量内存使用量。
是否有理由发生这种情况,或者我可以释放我显然不再使用的内存的方法?
编辑:
我做了以下事情但没有成功:
[managedObjectContext refreshObject:myObject mergeChanges:NO];
我遇到了同样的问题。当我使用 NSUnarchiver 解压缩数据时,它会生成大量临时内存,并且不会释放临时内存。我通过添加@autoreleasepool解决了它,就像@KrishnaCA所说的那样。它不适合您添加的代码吗?如果显示简单代码,则有助于解决问题。