【发布时间】:2011-12-05 18:53:51
【问题描述】:
我在使用通用 iOS 应用程序时遇到了内存问题:CoreData 使用了太多内存 (> 30 Mo)。因此,我尽我所能减少使用的内存量。
基本上我的 CoreData 模型是一个基本的目录模型:
- 高级类别(二进制数据有限的实体
- 每个类别都有约 10 个子类别(二进制数据有限的实体
- 每个子类别有大约 10 个产品(同样,有限的二进制数据
- 每个产品都有约 10 张详细图片(数据量更大:约 40-70K)
每个项目的详细项目(包括图片)被释放后,我做一个
[NSManagedObjectContext refreshObject:item mergeChanges:NO];
调用以减少内存中的图形(以跳过图片)
在 iOS 5+ 上一切正常,但在 iOS 4.3 上,我遇到了很多错误。
有时,错误是:
由于未捕获的异常而终止应用程序 'NSObjectInaccessibleException',原因:'NSManagedObject 与 编号:0xbb70480 已失效。'
其他时候,应用程序因“处理程序引发异常”而被终止,并且没有详细说明出了什么问题。
我的问题是:
- 知道为什么该行为与 iOS 5 和 iOS 4.3 不同吗?
- 有什么建议可以减少 CoreData 使用的内存吗? (除了释放获取控制器和释放不再使用的上下文)
【问题讨论】: