2011-04-21 88 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

相關問題