Какова самая большая сумма объектов, я могу вставить свой NSArray?
Метод NSArray initWithCapacity принимает в качестве аргумента неподписанный int. Таким образом, каким бы ни было максимальное значение беззнакового int на вашей платформе, оно может быть теоретическим пределом. Однако реальный лимит скорее зависит от объема доступной памяти.
Nsarray - это контейнер указателей на другие объекты. Его максимальная мощность определяется Nsuinteger (на последних версиях имеющихся OSS):
при создании 32-битных приложений, Nsuinteger - 32-битный беззнаков Целое число. 64-битное удовольствие приложений Nsuinteger как 64-битный беззнаков Поэтому целое число
Следовательно, какой размер Nsuinteger находится на данном устройстве, является максимальным количеством указателей объектов, которые он может содержать. Однако, когда Eimantas намекал в своем ответе, это не совпадает с «сколько объектов может удерживать», потому что это зависит от доступной памяти. У вас может не быть достаточно, доступна в данный момент, чтобы выделить массив с шестью миллиардами слотов, например ...
Вы пытались узнать? ;)
NSMutableArray * a = [[NSMutableArray alloc] init];
NSUInteger i = 0;
@try {
while (1) {
[a addObject:@"hi"];
i++;
}
} @catch (NSException * e) {
NSLog(@"added %llu elements", i);
}
В большинстве случаев это касается верхних границ структур программирования и тому подобного:
"Если вам нужно спросить, вы, вероятно, делаете это неправильно" - TheDailyWTF.com