0

我有一个为 iPhone 开发的目录,这是我的第一个应用程序。因此,当我在目录中有超过 55 张照片时,我遇到了一些内存泄漏问题和应用程序崩溃。(我会在它崩溃时解释)

我已经使用 Leaks Performance Tools 进行了测试,并成功修复了漏洞,但我的应用程序仍然崩溃。

我的数据类有 5 个 NSMutableArrays。1 有 50 个用于 Portrait 的 UIImage 元素。第二个有 25 个用于景观的 UIImage 元素(目录在 1 个横向图像中使用 2 个纵向)。其他有 50 个 NSNumber 用于从纵向阵列到横向阵列的参考图像位置。另外两个有 50 个 NSString 元素,具有 (1) 名称和 (2) 图标图像的地址。在 AppDelegate(应用程序的负载)中创建了一个 Data 类对象。

我在 Portrait 中启动目录,通过传递 Portrait Array(使用 UIImages)制作视图。当设备向左转时,我重新制作通过景观数组的视图(释放旧视图)。在 xCode 中,一切正常!!!在设备中,当我向左转设备(重新制作视图)时,有时(我注意到当我打开其他应用程序时)应用程序崩溃并显示以下消息:“程序收到信号:“0”。数据格式化程序暂时不可用“

我知道这条消息是指内存泄漏问题,所以我的问题是:

使用 SQLite 存储我的数据(实际上是在 NSMutableArrays 中)我会获得内存性能吗?我是 iPhone 版 SQLite 的新手。有没有其他解决方案来存储我的数据?

谢谢大家,伙计们!!!

4

2 回答 2

0

这个问题不是关于NSMutableArrays而是SQLite更多关于内存使用。AUIImage通常会消耗大量内存,并且应该在不需要时释放,通常是在它不可见的时候。您的应用程序可能有 0 次泄漏,但仍会崩溃。您需要注册UIApplicationDidReceiveMemoryWarningNotification通知并采取相应措施。UIViewControllers 已经响应- (void)didReceiveMemoryWarning,您可以覆盖它。现在,为了在需要释放内存时将这些图像存储在磁盘上,您可以使用 SQLite 或我推荐的方法,只需创建一个缓存文件夹即可。

于 2011-04-13T21:31:36.000 回答
0

我喜欢 SQLite 作为解决方案。提供一个预填充的数据库很容易,除此之外,您只需将您的应用程序连接到一些可以添加/删除/更新记录的方法。

SQLite 无法解决您的问题 - 问题是内存管理。弄错了,您将数据存储在哪里都没有关系。

将 2 个问题分开 - 显示与存储。让显示正常工作,然后担心在哪里存储数据。

于 2011-04-13T21:32:56.687 回答