我只是想知道我有多少個對象可以放入一個NSArray,因爲我需要找到一個像一個陣列的功能,但我需要的東西保存大量數據(900到1200個字符串之間)。我正在考慮使用NSDictionary來保存數據,但似乎並不符合法案。你認爲一個NSArray會擁有那麼多對象,還是我應該使用NSDictionary?
回答
從技術上講,NSArray最多可容納NSUIntegerMax對象(這是可從count
返回的最大值)。在像iPhone這樣的32位系統上,這個數字略高於40億。在像大多數Mac電腦一樣的64位系統上,它的數量要高出許多個數量級。當你甚至需要考慮在NSArray中耗盡空間時,你會首先遇到其他縮放問題,例如40億個四字符串將佔用16GB內存。
對於不同大小的陣列,NSArray有兩個內部實現--1200個項目仍然可以在「小陣列」實現中。
小附錄:我剛纔看到一篇有趣的文章,內容是關於'NSArray'的實現細節:[我們的數組,不是](http://ridiculousfish.com/blog/archives/2005/12/23/array/ #fish_made_a_mess) – 2011-04-21 22:33:02
你有多少內存?
除了保存所有數據所需的位數外,沒有實際的上限。 1200項是好的。但是如果這些項目是每一萬字的字符串,你可能會開始需要太多的內存來保存它們。
我有4GB的內存。 – Justin 2011-04-21 21:49:12
問題是修辭:)問題在於「我的陣列可以有多大?」和「我有多少內存?」幾乎是同一個問題。 – 2011-04-21 21:58:11
您可以將無限數量的對象存儲在NSArray中,直到內存不足。 900-1200個字符串不是一個很大的數字,但它顯然取決於每個字符串的長度。你事先知道他們會不會很久?
它們將最多20個字符。 – Justin 2011-04-21 21:48:33
- 1. 有多少文本asp:label控件可以容納多少限制?
- 2. 單個SQL Server 2012數據庫可以容納多少個表?
- 3. Java StringBuilder可以容納多少個字符?
- 4. Java - 你可以有多少個對象?
- 5. XMLHttpRequest響應中可以容納多少數據?
- 6. 200mb ASP.NET會員數據庫可以容納多少用戶?
- 7. 多維NSArray對象
- 8. 谷歌分析可以容納多少財產以及高級谷歌分析?
- 9. SSIS 2005可以合併加入容納一對多連接
- 10. 一個ActiveScheduler可以處理多少個活動對象?
- 11. 多個NSArray的和普通的對象
- 12. 如何創建一個可以容納不同類型對象的列表?
- 13. 會話變量可容納的最大大小是多少?
- 14. LINQ每秒可以創建多少個對象?
- 15. 構建可容納文件內容的JSON對象
- 16. 將創建多少個對象以及將有多少對象可用於垃圾回收?
- 17. Hibernate:ManytoOne - 多少個對象?
- 18. 可能bitmask更多的值比int可以容納?
- 19. 可可內存管理NSArray與對象
- 20. 以文件格式識別可可(NSData,NSArray等)對象
- 21. JVM中有多少個對象太多?
- 22. C++ - 可以容納istreams的變量?
- 23. 調整集合以容納大量對象
- 24. 如何製作一個可以容納多個數據的字典?
- 25. 有多少種方法可以添加到紅寶石對象?
- 26. NSArray中的單個索引的多個對象
- 27. NSUserDefaults是否可以使用自定義對象來保存NSArray?
- 28. 堆棧上有多少個對象?
- 29. 將爲String創建多少個對象?
- 30. 正在創建多少個對象?
好的。我從這個問題得到了答案。非常感謝你告訴我。而且,在任何人問起之前,我沒有看到它,當我搜索這樣的問題時 – Justin 2011-04-21 21:30:30