1

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

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

在此处输入图像描述

在此处输入图像描述

查看非对象选项卡时,我发现大部分分配发生在以下代码行,采用上述viewDidLoad方法articleViewController

    NSSet *tempSet = [[NSSet alloc] initWithSet:tempArticle.thumb];
    //tempArticle.thumb is the actual problem here
    [tempSet release]

tempArticleArticle类的一个实例,是 NSManagedObject 的子类。如果我注释掉这两行代码,一切正常,所以我猜这是 CoreData 使用错误的结果。

任何帮助表示赞赏。谢谢!

4

1 回答 1

0

Core Data 处理自己的内存管理。它可以将对象保存在内存中或随心所欲地清除它们。

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

于 2012-08-29T18:55:31.103 回答