2010-03-24 26 views
34

¿Cómo se obtiene el tamaño de NSArray y lo imprime en la consola con NSLog?Tamaño de un NSArray

+9

http://developer.apple.com/mac/library/ documentación/Cocoa/Referencia/Fundación/Clases/NSArray_Class/NSArray.html # // apple_ref/occ/instm/NSAr ray/count – Nippysaurus

Respuesta

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

Técnicamente debe ser 'NSUInteger size = ...', pero +1 de todos modos. :) –

+1

Deberás convertirlo en un tipo compatible con printf para imprimirlo, porque printf no tiene un especificador de formato para NS [U] Integer. – Chuck

+1

@Chuck los documentos dicen que use '% ld' y'% lu' para 'NSInteger' y' NSUInteger', respectivamente. http://developer.apple.com/mac/library/documentation/cocoa/conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW5 –

2

Echa un vistazo a este post para la matriz pregunta tamaño

Length of an Array in Objective C

Uso NSLog escribir en la consola ...

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

El tamaño puede ser determinado mediante el envío 'contar' a la instancia de NSArray, y la impresión a la consola se puede hacer a través de NSLog(), por ejemplo:

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

Una respuesta a otra respuesta:

No se puede obtener el tamaño de la matriz en megabytes, al menos no sin hacer una cierta complicado, no soportada vudú * C. NSArray es un clúster de clase, lo que significa que no sabemos cómo se implementa internamente. De hecho, la implementación utilizada puede change depending on how many items are in the array. Además, el tamaño de la matriz es disjunto del tamaño de los objetos a los que hace referencia la matriz, ya que esos objetos viven en otro lugar en el montón. Incluso la estructura que contiene los punteros del objeto no es técnicamente "parte" de la matriz, ya que no es necesariamente calloc 'd justo al lado del NSArray real en el montón.

Si desea que el tamaño de la matriz estructura en sí, así que es aparentemente sólo 4 bytes:

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

Lienzo:

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

(Por supuesto, eso no es una representación decente, ya que NSArray es probablemente solo sea una interfaz abstracta para otro tipo de objeto, por lo general algo así como NSCFArray. Si mira en NSArray.h, verá que un NSArray no tiene variables de instancia. Bastante raro para som Todo lo que se supone que debe contener otros objetos, ¿eh?)

* Por "no compatible" me refiero a "no recomendado", "profundizar en el misticismo interno de los clústeres de clase" y "API indocumentada y privada, si es que existe"

0

En Swift 4

dejar que a = [ "a", "b"]

a.count // 2