2012-05-16 14 views
5

en C I simplemente puedo declarar una matriz como esto:Creación de un NSArray vacío

int array[500]; 

para declarar una matriz de tamaño 500 que luego puede ser llenado más tarde. ¿Es posible hacer lo mismo en NSArray? Entiendo que para NSMutableArray existe el método de clase arrayWithCapacity para "crear" y vaciar el conjunto (o al menos declarar que el conjunto se completará más adelante). ¿Hay alguna manera de hacer algo similar para NSArray, ya que sé el tamaño exacto de mi matriz? Quiero completar los contenidos más adelante en un ciclo "for".

Gracias

Respuesta

1

Técnicamente, int array[500]; no crea una matriz vacía - se crea una matriz llena de ceros. Como NSArray s es inmutable, necesita usar NSMutableArray si desea poder poblarlo más tarde.

Usted puede hacer una matriz con una capacidad específica, y luego poner los objetos en ella, así:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:500]; 
for (int i = 0 ; i != 500 ; i++) { 
    [array addObject:@(i)]; 
} 

Desde NSMutableArray es un NSArray, se puede crear en un método como NSMutableArray*, y luego regreso como NSArray* a las personas que llaman.

+0

Esta respuesta tiene un problema. Como se indica en la documentación para '[NSArray arrayWithObjects: count:]': "count es el número de valores de la matriz C de objetos para incluir en la nueva matriz. Este número será el recuento de la nueva matriz. ** Debe no ser negativo o mayor que la cantidad de elementos en los objetos **. " –

+0

@DavePeck ¡Dios mío, no puedo creer que nadie haya notado esto antes! ¡Gracias por el comentario! – dasblinkenlight