我可以放入NSArray的最大对象数量是多少?
答案 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]
并且没有找到任何对象。
如果你的空间/内存不足,我会说这是你的限制。
答案 5 :(得分:1)
NSArray是指向其他对象的指针的容器。其最大容量由NSUInteger定义(在可用操作系统的最新版本上):
构建32位应用程序时, NSUInteger是一个32位无符号 整数。 64位应用程序处理 NSUInteger为64位无符号 整数
因此,无论给定设备上NSUInteger的大小如何,它都可以包含最大数量的对象指针。然而,正如Eimantas在他的回答中提到的那样,这与“它能容纳多少个物体”不同,因为这取决于可用的记忆。您可能没有足够的RAM可用于分配具有60亿个插槽的阵列,例如......