2011-04-21 63 views
1

可能重复:
Maximum amount of objects in NSArraynsarray可以容纳多少个对象?

我只是想知道我有多少个对象可以放入一个NSArray,因为我需要找到一个像一个阵列的功能,但我需要的东西保存大量数据(900到1200个字符串之间)。我正在考虑使用NSDictionary来保存数据,但似乎并不符合法案。你认为一个NSArray会拥有那么多对象,还是我应该使用NSDictionary?

+0

好的。我从这个问题得到了答案。非常感谢你告诉我。而且,在任何人问起之前,我没有看到它,当我搜索这样的问题时 – Justin 2011-04-21 21:30:30

回答

6

从技术上讲,NSArray最多可容纳NSUIntegerMax对象(这是可从count返回的最大值)。在像iPhone这样的32位系统上,这个数字略高于40亿。在像大多数Mac电脑一样的64位系统上,它的数量要高出许多个数量级。当你甚至需要考虑在NSArray中耗尽空间时,你会首先遇到其他缩放问题,例如40亿个四字符串将占用16GB内存。

对于不同大小的阵列,NSArray有两个内部实现--1200个项目仍然可以在“小阵列”实现中。

+0

小附录:我刚才看到一篇有趣的文章,内容是关于'NSArray'的实现细节:[我们的数组,不是](http://ridiculousfish.com/blog/archives/2005/12/23/array/ #fish_made_a_mess) – 2011-04-21 22:33:02

2

你有多少内存?

除了保存所有数据所需的位数外,没有实际的上限。 1200项是好的。但是如果这些项目是每一万字的字符串,你可能会开始需要太多的内存来保存它们。

+0

我有4GB的内存。 – Justin 2011-04-21 21:49:12

+2

问题是修辞:)问题在于“我的阵列可以有多大?”和“我有多少内存?”几乎是同一个问题。 – 2011-04-21 21:58:11

1

您可以将无限数量的对象存储在NSArray中,直到内存不足。 900-1200个字符串不是一个很大的数字,但它显然取决于每个字符串的长度。你事先知道他们会不会很久?

+0

它们将最多20个字符。 – Justin 2011-04-21 21:48:33

相关问题