NSArray中的最大对象数量

时间:2010-01-28 15:08:18

标签: cocoa nsarray

我可以放入NSArray的最大对象数量是多少?

6 个答案:

答案 0 :(得分:10)

你试过找出来吗? ;)

NSMutableArray * a = [[NSMutableArray alloc] init];
NSUInteger i = 0;
@try {
  while (1) {
     [a addObject:@"hi"];
     i++;
  }
} @catch (NSException * e) {
  NSLog(@"added %llu elements", i);
}

答案 1 :(得分:9)

NSArray initWithCapacity方法,将unsigned int作为参数。因此无论你的平台上unsigned int的最大值是什么,都可能是理论上的限制。但实际限制更可能取决于您可用的内存量。

答案 2 :(得分:5)

在大多数情况下,涉及编程结构的上限等:
“如果你不得不问,你可能做错了” - TheDailyWTF.com

答案 3 :(得分:3)

可能比你的RAM还要多。

答案 4 :(得分:3)

NSNotFound 定义为 NSIntegerMax (如果您使用的是32位或64位系统,此值会更改)

NSNotFound 也是您执行

时获得的结果
  

[nsarray indexOfObject:obj]

并且没有找到任何对象。

如果你的空间/内存不足,我会说这是你的限制。

http://developer.apple.com/library/mac/#documentation/cocoa/reference/foundation/Miscellaneous/Foundation_Constants/Reference/reference.html

答案 5 :(得分:1)

NSArray是指向其他对象的指针的容器。其最大容量由NSUInteger定义(在可用操作系统的最新版本上):

  

构建32位应用程序时,   NSUInteger是一个32位无符号   整数。 64位应用程序处理   NSUInteger为64位无符号   整数

因此,无论给定设备上NSUInteger的大小如何,它都可以包含最大数量的对象指针。然而,正如Eimantas在他的回答中提到的那样,这与“它能容纳多少个物体”不同,因为这取决于可用的记忆。您可能没有足够的RAM可用于分配具有60亿个插槽的阵列,例如......