我正在构建一个新闻应用,其中有一系列代表实际文章的图像。当您点击其中一个时,它会打开主文章页面,其底部有一个包含相关文章的滚动视图。
我发现有关所述底部卷轴的奇怪(可能与CoreData相关)问题。当我打开文章页面时,我会获取相关文章,分配一系列articleViewControllers
并将其视图添加到滚动视图中。当我从文章页面切换时,我从滚动条中删除所有视图并释放articleViewControllers
。使用Instruments和一些快照(一个在点击一篇文章之前,另一个在切换回主页面时),我发现仍然分配了大量的内存(见图片)
在查看非对象选项卡时,我发现大多数分配都发生在以下代码行中,在上面提到的viewDidLoad
的{{1}}方法中:
articleViewController
NSSet *tempSet = [[NSSet alloc] initWithSet:tempArticle.thumb];
//tempArticle.thumb is the actual problem here
[tempSet release]
是tempArticle
类的实例,是NSManagedObject的子类。
如果我注释掉这两行代码,一切正常,所以我猜它是CoreData使用错误的结果。
感谢任何帮助。谢谢!
答案 0 :(得分:0)
Core Data处理自己的内存管理。它可以将对象保留在内存中或者按照自己的想法清除它们。
建议您不要在NSManagedObjects中存储大型BLOB(如图像)。而是将图像存储到磁盘,其文件路径引用在NSManagedObject中。