我正在进行的项目要求我在缓冲区中临时存储数百甚至数千个条目。简单的方法是将每个条目存储在NSDictionary
中,并将所有条目存储在NSArray
中。每个NSDictionary
包含大约十二个对象(NSStrings
和NSNumbers
)。在整个操作过程中,带有字典的NSArray
仍然在记忆中,因此我的问题。
就内存使用而言,这是一项昂贵的操作吗?测试它的好方法是什么?
答案 0 :(得分:2)
仪器包含内存监控模块。在仪器的左下角,单击齿轮图标,然后选择添加仪器>记忆Monitory。 Apple's documentation应该可以帮助您了解如何使用Instruments监控内存。另请参阅this question。
根据我的经验,NSDictionary
和NSArray
在内存使用方面都非常有效。我编写了几个应用程序来存储来自.csv
或.xml
文件的数千个键/值,并且随着NSDictionary
的填充,内存使用量会有相当线性的增长。我的建议是,如果你可以为它们构建单元测试,可以在某些极端情况下使用Instruments Profiler。
我不确定我理解你为什么要在NSDictionary
和NSArray
中存储这些条目。
如果你达到内存使用的上限,你可能想要考虑的一件事是将条目转换为SQLite数据库,然后索引要查找的列。
编辑:如果您想深入了解iPhone内存消耗,请务必查看this question。
答案 1 :(得分:1)
Apple的集合类比你或我创建的更有效率,我不会担心带有数千个小条目的字典,请记住,当添加到字典中时,值不会被复制,但键是。据说只记得你需要的东西。