3

我的应用程序(arc,ios5)有时会在我拍照并保存到CoreData. 使用Instruments发现崩溃前有内存警告,于是尝试了解内存是如何使用的。

我的应用程序将行程存储在 CoreData(共 200MB)中,每次行程有数百个CLLocation对象和数十个UIImage对象。

每次我通过pushViewController查看一次行程详情时,内存使用量都会增加;但是在我popViewController之后,内存使用量仍然存在。

我认为有几个嫌疑人:

  1. CoreData 缓存,但我不知道如何清除它;
  2. 详细视图控制器,因为我没有看到在每个popViewController之后调用任何viewDidUnload

经过一些测试,我很困惑,即使我手动调用viewDidUnload,内存使用量仍然存在。

我还在我的应用程序的 ios5.0 模拟器中测试了内存泄漏工具,它很干净。

4

2 回答 2

1

由于内存问题,不建议将图像存储在 coredata 中。检查您是否可以将其存储在文件夹中,并将图像名称/路径存储在您的核心数据中。大多数情况下应该可以解决内存问题。

这里有一些关于这个CoreData (for iphone) storage imagesCore Data - Storing Images (iPhone)的帖子

于 2012-10-11T05:36:18.467 回答
1

首先,不要使用核心数据来存储图像数据。在 iOS 5 及更高版本上,您可以在属性的文件检查器上将属性检查为“允许外部存储”。您还可以将图像保存在文档目录中,并使用核心数据保存图像的路径。将这些图像呈现给界面时,将它们缓存在 NSCache 上,以便在内存警告开始弹出时清除这些图像。更改管理这些图像的方法将对内存不足警告期间的内存响应产生重大影响。

于 2012-10-11T14:53:09.300 回答