Размер NSArray - PullRequest
       18

Размер NSArray

45 голосов
/ 25 марта 2010

Как получить размер NSArray и распечатать его в консоли, используя NSLog?

Ответы [ 5 ]

76 голосов
/ 25 марта 2010
int size = [array count];
NSLog(@"there are %d objects in the array", size);
10 голосов
/ 25 марта 2010

Ответ на другой ответ:

Вы не можете получить размер массива в мегабайтах, по крайней мере, не сделав несколько хитрых, неподдерживаемых * 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, если он вообще существует»

5 голосов
/ 25 марта 2010

Размер можно определить, отправив 'count' экземпляру NSArray, а печать на консоль можно выполнить с помощью NSLog (), например:

NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
NSLog(@"array size is %d", [array count]);
2 голосов
/ 25 марта 2010

Посмотрите на этот пост для вашего вопроса о размере массива

Длина массива в объективе C

Используйте NSLog для записи в консоль ...

NSLog(@"The array size is %@", arraySize);
1 голос
/ 12 октября 2017

В Swift 4

let a = ["a", "b"]

a.count // 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...