Какое наибольшее количество объектов я могу разместить в моем NSArray?Максимальное количество объектов в NSArray
ответ
Метод NSArray initWithCapacity принимает в качестве аргумента unsigned int. Так что любое максимальное значение unsigned int на вашей платформе может быть теоретическим пределом. Однако фактический предел, скорее всего, будет зависеть от объема доступной памяти.
Вероятно, больше, чем может обрабатывать ваша оперативная память.
NSArray - это контейнер указателей на другие объекты. Его максимальная мощность определяется NSUInteger (на последних версиях доступных операционных систем):
При создании 32-разрядных приложений, NSUInteger является 32-разрядное беззнаковое целое число . 64-битное приложение обрабатывает NSUInteger в качестве 64-битового целого числа без знака
Поэтому, независимо от размера NSUInteger на данном устройстве является максимальное количество указателей объектов он может содержать. Однако, как упоминал Эймантас в своем ответе, это не то же самое, что «сколько объектов можно удерживать», потому что это зависит от доступной памяти. В определенный момент времени вам может не хватить достаточного количества оперативной памяти для размещения массива с шестью миллиардами слотов, например ...
В большинстве случаев относительно верхних пределов структур программирования и т.п.:
«Если вы должны спросить , вы, вероятно, ошибаетесь »- TheDailyWTF.com
Вы пытались это выяснить? ;)
NSMutableArray * a = [[NSMutableArray alloc] init];
NSUInteger i = 0;
@try {
while (1) {
[a addObject:@"hi"];
i++;
}
} @catch (NSException * e) {
NSLog(@"added %llu elements", i);
}
Delong, пробовав вашу идею и узнав ограничение по размеру , это приложение вылетает и получает ошибку в качестве сигнала приема программы: «0». Форматы данных временно недоступны, повторите попытку после продолжения.(Неизвестная ошибка загрузки разделяемой библиотеки "/Developer/usr/lib/libXcodeDebuggerSupport.dylib") –
у вас закончилась нехватка памяти. просто запишите, что я есть на каждой итерации, и пусть он падает, последний журнал расскажет вам, сколько вы могли бы получить. Кстати, ваш тест говорит, что размер ограничен только памятью. –
NSNotFound определяется как NSIntegerMax изменения (это значение, если вы находитесь на 32-битной или 64-битной системы)
NSNotFound также результат, который вы получаете, когда вы делаете
[NSArray indexOfObject: OBJ]
и объект не найден.
Если у вас не закончилось пространство/память, я бы сказал, что это будет ваш лимит.
- 1. Количество объектов в NSArray
- 2. Максимальное количество объектов в PDF
- 3. Основные данные Максимальное количество объектов
- 4. Максимальное количество объектов в массиве для класса
- 5. Максимальное количество объектов в рабочей области r
- 6. Максимальное количество SAN (альтернативных имен объектов) разрешено
- 7. PhoneGap - Максимальное количество активных объектов мультимедиа?
- 8. Twitter апи питон - максимальное количество объектов
- 9. JUnit - Тест Максимальное количество объектов, созданных
- 10. Как определить количество объектов в каждом объекте NSDictionary в NSArray
- 11. Объединение объектов в NSArray
- 12. Как получить количество объектов в NSArray внутри NSDictionary
- 13. C# Максимальное количество потоков
- 14. Изменение управляемых объектов в NSArray
- 15. Максимальное количество элементов, возвращаемых в запросе списка объектов GCS #
- 16. Максимальное количество таблиц (объектов) в выпусках SQL Server (компактных, экспресс)
- 17. Как хранить максимальное количество 5 объектов в NSMutableArray?
- 18. Количество значений в NSDictionarys в NSArray
- 19. Количество элементов в NSArray, где (....)
- 20. Объекты NSArray объектов
- 21. Сохранение NSArray пользовательских объектов
- 22. сортировать NSArray объектов CLLocation
- 23. Комбинации различных объектов NSArray
- 24. Фильтр NSArray пользовательских объектов
- 25. Быстрый поиск объектов в NSArray
- 26. Обнаружение нескольких объектов в NSArray
- 27. Сохранение объектов UITextField в NSArray
- 28. Импорт объектов JSON в NSArray
- 29. gsutil copy, как указать максимальное количество копируемых объектов?
- 30. максимальное количество пользователей
'NSUInteger', не' без знака int'. В 64-битных архитектурах 'unsigned int' по-прежнему 4 байта, тогда как' NSUInteger', что NSArray использует с тех пор, как Leopard-is 8. –
Неверно предположить, что максимальное количество объектов NSUIntegerMax. Как указывает jsmp, NSArray использует NSNotFound. NSNotFound определяется как NSIntegerMax, который меньше, чем NSUInteger. Это означает, что максимальное количество объектов - NSIntegerMax-1. Я бы испытал это, как предлагает Дейв Делонг, но я убегаю, если память! –
Надеюсь, у вас достаточно ОЗУ, чтобы хранить в 180 раз больше информации, чем Lt. Cmd. Данные! http://www.wolframalpha.com/input/?dataset=&i=(1*(2%5E64)+%2B+8+%2B+8)+bytes –