Подтвердить что ты не робот

Размер NSArray

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

4b9b3361

Ответ 1

int size = [array count];
NSLog(@"there are %d objects in the array", size);

Ответ 2

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

Вы не можете получить размер массива в мегабайтах, по крайней мере, не без какого-либо сложного, неподдерживаемого * V voooo. NSArray - кластер классов, что означает, что мы не знаем, как он реализован внутри. В самом деле, используемая реализация может изменять в зависимости от количества элементов в массиве. Более того, размер массива не пересекается с размером объектов, на которые ссылается массив, поскольку эти объекты находятся в другом месте в куче. Даже структура, содержащая указатели объектов, не является технически "частью" массива, поскольку она не обязательно calloc 'd прямо рядом с фактическим NSArray в куче.

Если вам нужен размер самой структуры массива, ну, по-видимому, всего 4 байта:

NSLog(@"Size: %d", sizeof(NSArray));

Печать

2010-03-24 20:08:33.334 EmptyFoundation[90062:a0f] Size: 4

(Конечно, это не приличное представление, так как NSArray, вероятно, просто абстрактный интерфейс для другого типа объекта, обычно что-то вроде NSCFArray. Если вы посмотрите в NSArray.h, вы увидите, что NSArray не имеет переменных экземпляра. Довольно странно для чего-то, что должно содержать другие объекты, а??)

* Под "unsupported" я имею в виду "не рекомендуется", "вникая во внутреннюю мистику кластеров классов" и "недокументированный и закрытый API, если он существует"

Ответ 3

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

NSArray * array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
NSLog(@"array size is %d", [array count]);

Ответ 4

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

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

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

NSLog(@"The array size is %@", arraySize);

Ответ 5

В Swift 4

пусть a = [ "a", "b" ]

a.count//2