繁体   English   中英

iPhone NSMutableArray与SQLite

[英]iPhone NSMutableArray vs. SQLite

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

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

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

我以Portrait启动目录,通过传递portrait Array(带有UIImages)来创建视图。 当设备向左转时,我将重新制作通过横向Array的视图(释放旧视图)。 在xCode中,所有这些都可以正常工作!!! 在设备中,当我向左转设备(以重新制作视图)时,有时(当我打开其他应用程序时注意到),该应用程序崩溃并显示以下消息:“程序收到信号:“ 0”。数据格式化程序暂时不可用”

我知道此消息涉及内存泄漏问题,所以我的问题是:

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

谢谢大家!

这个问题与NSMutableArraySQLite而与内存使用有关。 UIImage通常会占用大量内存,并且在不需要时应释放​​它,通常在不可见时才释放。 您的应用程序可能有0个泄漏,但仍然会崩溃。 您将需要注册UIApplicationDidReceiveMemoryWarningNotification通知并采取相应措施。 UIViewController已经响应- (void)didReceiveMemoryWarning ,您可以对其进行覆盖。 现在,当您需要释放内存时,可以将这些图像存储在磁盘上了,可以使用SQLite或我建议的方式,只需创建一个缓存文件夹即可。

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

SQLite不会解决您的问题-问题是内存管理。 弄错了,与存储数据的位置无关。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM