iPhone NSMutableArray与SQLite

iPhone NSMutableArray与SQLite

问题描述:

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

我已经使用泄漏性能工具进行了测试,并且我成功修复了泄漏,但是我的应用仍然崩溃。

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

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

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

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

谢谢大家,伙计们!

此问题少于NSMutableArray s与SQLite以及更多关于内存使用情况的内容。一个UIImage通常会消耗大量的内存,并且在不需要时通常在不可见时应该被释放。您的应用程序可能有0个泄漏,但仍会崩溃。您需要注册UIApplicationDidReceiveMemoryWarningNotification通知并采取相应措施。 UIViewController s已经回复- (void)didReceiveMemoryWarning,您可以覆盖。现在,将这些图像存储在磁盘上,以便在需要释放内存时使用SQLite或我推荐的内容,只需创建一个缓存文件夹即可。

+0

谢谢!这个答案使我获得时间,不会改变我的存储方法。唯一的问题是我在Objective-C中是相对新手,我不知道如何管理内存。我参考了Apple的教程,但从不改变。我有我的数组与UIImages在委托启动方法中创建(与[UIImage alloc])。当我显示这些UIImages时,我使用[myUIImage release];和应用程序崩溃的参考文献不全。是否有任何其他教程介绍如何在iPhone中使用不是来自Apple的内存管理? – mausalamon 2011-04-15 12:54:22

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

你的问题不会用SQLite解决 - 问题在于内存管理。弄错了,这与存储数据的位置无关。

将2个问题分开 - 显示vs存储。让显示器正常工作,然后担心存储数据的位置。

+0

谢谢!我的答案在上面! – mausalamon 2011-04-15 12:59:13