web-dev-qa-db-fra.com

Taille d'un NSArray

Comment obtenir la taille d'un NSArray et l'imprimer dans la console en utilisant NSLog?

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

Une réponse à une autre réponse:

Vous ne pouvez pas obtenir la taille du tableau en mégaoctets, du moins pas sans faire du vaudou * C délicat et non pris en charge. NSArray est un cluster de classes, ce qui signifie que nous ne savons pas comment il est implémenté en interne. En effet, l'implémentation utilisée peut changer en fonction du nombre d'éléments dans le tablea . De plus, la taille du tableau est disjointe de la taille des objets auxquels le tableau fait référence, car ces objets vivent ailleurs sur le tas. Même la structure qui contient les pointeurs d'objet ne fait pas techniquement partie du tableau, car elle n'est pas nécessairement calloc 'juste à côté du NSArray réel sur le tas.

Si vous voulez la taille de la structure du tableau elle-même, eh bien c'est apparemment seulement 4 octets:

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

Tirages:

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

(Certes, ce n'est pas une représentation décente, car NSArray n'est probablement qu'une interface abstraite pour un autre type d'objet, généralement quelque chose comme un NSCFArray. Si vous regardez dans NSArray.h, vous verrez qu'un NSArray n'a pas de variables d'instance. Assez bizarre pour quelque chose qui est censé contenir d'autres objets, hein?)

* Par "non pris en charge", je veux dire "non recommandé", "plonger dans le mysticisme intérieur des clusters de classes" et "API privée et non documentée, si elle existe"

10
Dave DeLong

La taille peut être déterminée en envoyant 'count' à l'instance NSArray, et l'impression sur la console peut être effectuée via NSLog (), par exemple:

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

Jetez un oeil à ce post pour votre question sur la taille du tableau

Longueur d'un tableau dans l'objectif C

Utilisez NSLog pour écrire sur la console ...

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

Dans Swift 4

soit a = ["a", "b"]

a.count // 2

1
Ankit garg