2012-05-16 9 views
5

in C posso semplicemente dichiarare un array come questo:Creazione di una NSArray vuoto

int array[500]; 

per dichiarare un array di dimensione 500 che può essere riempito in seguito. È possibile fare la stessa cosa in NSArray? Capisco per NSMutableArray che esiste il metodo della classe arrayWithCapacity per "creare" e svuotare l'array (o almeno dichiarare la matrice da riempire in seguito). C'è un modo per fare qualcosa di simile per NSArray, dal momento che conosco la dimensione esatta del mio array voglio riempire il contenuto più tardi in un ciclo "for".

Grazie

risposta

1

Tecnicamente, int array[500]; non crea un array vuoto - crea una gamma completa di zeri. Poiché NSArray s è immutabile, è necessario utilizzare NSMutableArray se si desidera poterlo popolare in seguito.

È possibile effettuare una matrice con una capacità specifica, e poi mettere gli oggetti in esso, in questo modo:

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

Dal NSMutableArray è un NSArray, è possibile creare in un metodo come NSMutableArray*, e poi il ritorno è come NSArray* per i chiamanti.

+0

Questa risposta ha un problema. Come indicato nella documentazione di '[NSArray arrayWithObjects: count:]': "count è il numero di valori dalla matrice di oggetti C da includere nel nuovo array.Questo numero sarà il conteggio del nuovo array. ** Deve non essere negativo o superiore al numero di elementi negli oggetti **. " –

+0

@DavePeck OMG, non posso credere che nessuno l'abbia mai notato prima! Grazie per il commento! – dasblinkenlight