iPhone NSMutableArray vs. SQLite



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

我已经测试了泄漏性能工具,我成功地修复了泄漏,但我的应用程序仍然崩溃。

我的数据类有5个nsmutablearray。我有50个UIImage元素用于Portrait。第二个有25个用于风景的UIImage元素(目录使用2个肖像和1个风景图像)。其他有50nsnumber作为纵向数组到横向数组的图像位置参考。另外两个有50个NSString元素(1)名称和(2)图标图像的地址。一个Data类对象在AppDelegate (load of application)中创建。

我在Portrait中开始目录,通过传递Portrait Array(使用UIImages)来制作视图。当设备左转时,我重制视图(释放旧视图)通过景观数组。在xCode中,所有的工作都很好!!在设备,当我把设备左(重制视图),有时(我注意到当我有其他应用程序打开),应用程序崩溃与此消息:程序接收信号:"0"。"数据格式化程序暂时不可用"

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

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

谢谢大家!!

这个问题不是关于NSMutableArray s vs SQLite的,而是关于内存使用的。UIImage通常会消耗大量内存,在不需要的时候应该释放,通常是在它不可见的时候。您的应用程序可能没有泄漏,但仍然会崩溃。您需要注册UIApplicationDidReceiveMemoryWarningNotification通知并采取相应的行动。UIViewController已经响应- (void)didReceiveMemoryWarning,你可以覆盖。现在要将这些图像存储在磁盘上,当你需要释放内存时,你可以使用SQLite或者我建议的,只是创建一个缓存文件夹。

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

你的问题不会用SQLite解决——问题是内存管理。如果做错了,你把数据存储在哪里就不重要了。

分离两个关注点——显示和存储。让显示正常工作,然后再考虑在哪里存储数据。

最新更新