2011-05-23 28 views
1

我目前正在研究相当数据密集型的iPhone应用程序。它下载大约300kb的XML数据,将其全部保存在模型对象的数组和字典的内存中,并对这些数据执行各种操作,这可能导致数据增长几倍。iOS:管理iPhone上大型数据集内存的一般技巧?

如何管理这种大小的数据集?你会使用核心数据来管理这个数据吗?或者你会像这样完成并操作数据?我永远不需要在设备上实际保留任何这些数据。

此外,我应该关心的是在内存中保存这些数据量吗?

只是在这里寻找一些一般的建议,并想知道别人在类似的情况下做了什么。感谢您的提示。

+0

听起来不像是一个真正的大量数据。不过,我首先用仪器对其进行分析,并查看所有对象的内存占用量有多大。然后决定迁移到Core-Data,或者如果你喜欢详细的工作直接sqlite。 – 2011-05-23 11:39:46

+0

谢谢尼克。我将这些XML数据与硬编码到客户端的其他静态数据合并到应用程序中,这可能会使整个数据集超过1MB。为了方便,我只是将客户端保存的数据硬编码到应用程序中的模型对象中,并且想知道是否核心数据在这里可能是更好的选择。 – DingoSalad 2011-05-23 11:54:36

+0

如果应用程序的其余部分没有耗尽所有可用内存我会坚持你目前的解决方案。但是,核心数据需要一些时间才能正确实施。就像Alex Reynolds提到的,你可以通过预取来保留内存中的托管对象。 – 2011-05-23 12:16:11

回答

1

不要将300 kB数据保存在内存中,而应考虑将XML数据放入Core Data存储中。

Faulting与核心数据谓词(“搜索”)一起用于“延迟加载”信息 - 即只在需要时从存储中提取数据,这会减少内存和性能开销。

我怀疑预取一些更频繁的重用数据可以帮助您的应用程序提高性能。阅读Core Data Performance文档以获取更多信息。

+0

因为我在数据上执行了很多操作(尤其是图形操作),所以我担心核心数据路径可能会导致性能下降? – DingoSalad 2011-05-23 11:55:43

+0

请参阅编辑答案。 – 2011-05-23 12:10:59