访问Core Data to-many关系时分配的内存未释放?

时间:2012-08-29 17:08:39

标签: ios core-data memory-management one-to-many nsmanagedobject

我正在构建一个新闻应用,其中有一系列代表实际文章的图像。当您点击其中一个时,它会打开主文章页面,其底部有一个包含相关文章的滚动视图。

我发现有关所述底部卷轴的奇怪(可能与CoreData相关)问题。当我打开文章页面时,我会获取相关文章,分配一系列articleViewControllers并将其视图添加到滚动视图中。当我从文章页面切换时,我从滚动条中删除所有视图并释放articleViewControllers。使用Instruments和一些快照(一个在点击一篇文章之前,另一个在切换回主页面时),我发现仍然分配了大量的内存(见图片)

enter image description here

enter image description here

在查看非对象选项卡时,我发现大多数分配都发生在以下代码行中,在上面提到的viewDidLoad的{​​{1}}方法中:

articleViewController

NSSet *tempSet = [[NSSet alloc] initWithSet:tempArticle.thumb]; //tempArticle.thumb is the actual problem here [tempSet release] tempArticle类的实例,是NSManagedObject的子类。 如果我注释掉这两行代码,一切正常,所以我猜它是CoreData使用错误的结果。

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

Core Data处理自己的内存管理。它可以将对象保留在内存中或者按照自己的想法清除它们。

建议您不要在NSManagedObjects中存储大型BLOB(如图像)。而是将图像存储到磁盘,其文件路径引用在NSManagedObject中。