2010-09-13 3 views
23

que je fais ceci:Comment ajouter des valeurs à un tableau en Objective-C

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

Il me revient 0,1,2,3 .... comptant un par un, mais je veux un tableau avec l'ajout de ces valeurs {0,1,2,3,4,5 ...}. Ce n'est pas une grosse affaire, mais je suis incapable de le trouver. Je suis nouveau sur iPhone.

+0

Ne pas utiliser des balises br. Utilisez le bouton "101010" pour formater le code. –

Répondre

55
NSMutableArray *myArray = [NSMutableArray array]; 

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

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

Assurez-vous de libérer le 'NSMutableArray' après! –

+0

ah, oui, je pense que je dois mettre le rappeler dans ma réponse – vodkhang

+0

Il devrait probablement être 'i JohnK

10

Ce code ne fait pas ce que vous voulez faire pour plusieurs raisons:

  1. NSArray est pas une classe « mutable », ce qui signifie qu'il est pas conçu pour être modifié après sa création. La version mutable est NSMutableArray, qui vous permettra d'ajouter des valeurs.

  2. Vous ne pouvez pas ajouter de primitives telles que int à une classe NSArray ou NSMutableArray; ils ne contiennent que des objets. La classe NSNumber est conçue pour cette situation.

  3. Vous fuite de mémoire chaque fois que vous allouent un tableau. Toujours coupler chaque appel à alloc avec un appel correspondant à release ou autorelease.

Le code que vous voulez est quelque chose comme ceci:

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 

Mon conseil pour vous est de lire le Cocoa Fundamentals Guide de comprendre certains principes de base.

1

Une façon plus courte que vous pourriez faire est:

NSMutableArray *myArray = [NSMutableArray array]; 

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

    [myArray addObject:@(i)]; 
} 

NSLog(@"myArray:\n%@", myArray); 
Questions connexes