我正在从事的项目要求我在缓冲区中临时存储数百个有时甚至数千个条目。最简单的方法是将每个条目存储在 NSDictionary
中,并将所有条目存储在 NSArray
中。每个 NSDictionary
包含大约十几个对象(NSStrings
和 NSNumbers
)。在整个操作过程中,NSArray
及其字典保留在内存中,因此我的问题。
就内存使用而言,这是一个昂贵的操作吗?测试它的好方法是什么?
最佳答案
Instruments 包含内存监控模块。在仪器的左下角,单击齿轮图标,然后选择“添加仪器”>“内存监控”。 Apple's documentation应该可以帮助您了解如何使用 Instruments 监视内存。另请参阅this question .
根据我的经验,NSDictionary
和 NSArray
在内存使用方面都相当高效。我编写了几个应用程序,它们存储 .csv
或 .xml
文件中的数千个键/值,并且内存使用量随着 NSDictionary
已填满。我的建议是在某些极端情况下使用 Instruments 分析器(如果您可以为它们构建单元测试)。
不过,我不确定我是否理解为什么您将条目存储在 NSDictionary
和 NSArray
中。
如果您达到内存使用上限,您可能需要考虑的一件事是将条目转换为 SQLite 数据库,然后为您想要查找的列建立索引。
编辑:请务必查看this question如果您想深入了解 iPhone 内存消耗。
关于cocoa - NSDictionary 和 NSArray 的内存占用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259840/