Как Вы получаете размер NSArray
и распечатайте его в консольном использовании NSLog
?
Размер можно определить, отправив 'count' экземпляру NSArray, а печать на консоль можно сделать через NSLog(), например:
NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
NSLog(@"array size is %d", [array count]);
Ответ на другой ответ:
Вы не можете получить размер массива в мегабайтах, по крайней мере, не выполнив некоторые хитрые, неподдерживаемые * C voodoo. NSArray
- это кластер классов, что означает, что мы не знаем, как он реализован внутри. Действительно, используемая реализация может меняться в зависимости от того, сколько элементов находится в массиве . Более того, размер массива не совпадает с размером объектов, на которые ссылается массив, поскольку эти объекты находятся в другом месте в куче. Даже структура, содержащая указатели на объекты, технически не является «частью» массива, поскольку не обязательно calloc
рядом с фактическим NSArray
в куче.
Если вам нужен размер самой структуры массива, то, по-видимому, всего 4 байта:
NSLog(@"Size: %d", sizeof(NSArray));
Печать:
2010-03-24 20:08:33.334 EmptyFoundation[90062:a0f] Size: 4
(Конечно, это не очень хорошее представление, поскольку NSArray
, вероятно, просто абстрактный интерфейс для другого типа объекта, обычно что-то вроде NSCFArray
. Если вы посмотрите в NSArray.h
, вы увидите, что NSArray
не имеет экземпляра переменные.Довольно странно для чего-то, что должно содержать другие объекты, а?)
*
Под «неподдерживаемым» я подразумеваю «не рекомендуется», «углубляясь во внутреннюю мистику кластеров классов» и «недокументированный и частный API, если он вообще существует "
Не совсем. JSR-275 должен был иметь часть своей функциональности (количество и тип единицы, очень похожие на 256), но SE / EE EC отказался от этого.
Консолидация между SE и ME, как упоминалось в Oracle, может когда-нибудь привести к более распространенной структуре Sensor API и Unit, но маловероятно до появления Java 8.
Вернер
-121------4460082-int size = [array count];
NSLog(@"there are %d objects in the array", size);
Взгляните на этот пост, чтобы узнать о размере массива.
Используйте NSLog для записи в консоль ...
NSLog(@"The array size is %@", arraySize);