NSArray中的最大对象数量

Mat*_* S. 7 cocoa nsarray

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

Dav*_*ong 10

你试过找出来的吗?;)

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

  • 你的内存不足.只记录我在每次迭代时的情况并让它崩溃,最后一个日志会告诉你你可以获得多少.顺便说一句,您的测试告诉您大小仅限于内存. (3认同)

Tom*_*rys 9

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

  • `NSUInteger`,而不是`unsigned int`.在64位体系结构中,`unsigned int`仍然是4个字节,而`NSUInteger`-这是NSArray自Leopard以来使用的是8. (4认同)
  • 假设NSUIntegerMax的最大对象数是不正确的.正如jsmp指出的那样,NSArray使用NSNotFound.NSNotFound定义为NSIntegerMax,小于NSUInteger.这意味着最大对象数是NSIntegerMax-1.我会像Dave Delong所说的那样测试这个,但是如果记忆我会跑出去! (2认同)

Chr*_*s S 5

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