2010-09-13 12 views
23

sto facendo questo:Come aggiungere valori a un array in Objective-C

for(int i=0;i>count;i++) 
{ 
    NSArray *temp=[[NSArray alloc]initWIthObjects]i,nil]; 
    NSLog(@"%i",temp); 
} 

Si ritorna a me 0,1,2,3 .... contare uno per uno, ma voglio un array con l'aggiunta di questi valori {0,1,2,3,4,5 ...}. Questo non è un grosso problema, ma non riesco a trovarlo. Sono nuovo di iPhone.

+0

Non utilizzare i tag br. Utilizzare il pulsante "101010" per formattare il codice. –

risposta

55
NSMutableArray *myArray = [NSMutableArray array]; 

for(int i = 0; i < 10; i++) { 
    [myArray addObject:[NSNumber numberWithInt:i]]; 
} 

NSLog(@"myArray:\n%@", myArray); 
+0

Assicurati di rilasciare il 'NSMutableArray' in seguito! –

+0

ah, sì, penso di aver bisogno di inserire il promemoria nella mia risposta – vodkhang

+0

Dovrebbe probabilmente essere 'i JohnK

10

Questo codice non è fare ciò che si vuole fare per diversi motivi:

  1. NSArray non è una classe "mutabile", che significa che non è progettato per essere modificato dopo che è stato creato. La versione mutabile è NSMutableArray, che consente di aggiungere valori.

  2. Non è possibile aggiungere primitive come int a una classe o di NSArrayNSMutableArray; tengono solo oggetti. La classe NSNumber è progettata per questa situazione.

  3. Si sta perdendo memoria ogni volta che si assegna un array. Abbina sempre ogni chiamata a alloc con una chiamata corrispondente a release o autorelease.

Il codice che si desidera è qualcosa di simile:

NSMutableArray* array = [[NSMutableArray alloc] init]; 
for (int i = 0; i < count; i++) 
{ 
    NSNumber* number = [NSNumber numberWithInt:i]; // <-- autoreleased, so you don't need to release it yourself 
    [array addObject:number]; 
    NSLog(@"%i", i); 
} 
... 
[array release]; // Don't forget to release the object after you're done with it 

Il mio consiglio è quello di leggere il Cocoa Fundamentals Guide per comprendere alcuni dei principi fondamentali.

1

Un modo più breve si potrebbe fare è:

NSMutableArray *myArray = [NSMutableArray array]; 

for(int i = 0; i < 10; i++) { 

    [myArray addObject:@(i)]; 
} 

NSLog(@"myArray:\n%@", myArray); 
Problemi correlati