调用popViewContrller方法时,iphone应用程序崩溃了

时间:2012-10-11 05:25:02

标签: objective-c ios core-data memory

拍摄照片并保存到CoreData后,我的应用程序(arc,ios5)有时会崩溃。使用 Instruments 我发现在崩溃之前有内存警告,所以我试图找出如何使用内存。

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

每次我通过 pushViewController 查看一个旅行细节时,内存使用量会增长;但在 popViewController 之后,内存使用量仍然存在。

我认为有几个嫌犯:

  1. CoreData缓存,但我不知道如何清除它;
  2. 详细视图控制器,因为在每个 popViewController 之后我没有看到任何 viewDidUnload ;
  3. 经过一些测试后,我很困惑,即使我手动调用 viewDidUnload ,内存使用量仍然存在。

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

2 个答案:

答案 0 :(得分:1)

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

以下是有关此CoreData (for iphone) storing imagesCore Data - Storing Images (iPhone)

的一些帖子

答案 1 :(得分:1)

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