Je fais ça:
for(int i=0;i>count;i++)
{
NSArray *temp=[[NSArray alloc]initWIthObjects]i,nil];
NSLog(@"%i",temp);
}
Il me revient 0,1,2,3 .... en comptant un par un, mais je veux un tableau avec en annexe ces valeurs {0,1,2,3,4,5 ...}. Ce n'est pas un gros problème, mais je ne peux pas le trouver. Je suis nouveau sur iPhone.
NSMutableArray *myArray = [NSMutableArray array];
for(int i = 0; i < 10; i++) {
[myArray addObject:@(i)];
}
NSLog(@"myArray:\n%@", myArray);
Ce code ne fait pas ce que vous voulez qu'il fasse pour plusieurs raisons:
NSArray
n'est pas une classe "mutable", ce qui signifie qu'elle n'est pas conçue pour être modifiée après sa création. La version modifiable est NSMutableArray
, ce qui vous permettra d'ajouter des valeurs.
Vous ne pouvez pas ajouter de primitives comme int
à une classe NSArray
ou NSMutableArray
; ils ne tiennent que des objets. La classe NSNumber
est conçue pour cette situation.
Vous perdez de la mémoire chaque fois que vous allouez un tableau. Associez toujours 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
Je vous conseille de lire le Cocoa Fundamentals Guide pour comprendre certaines des bases.
Un moyen plus court que vous pourriez faire est:
NSMutableArray *myArray = [NSMutableArray array];
for(int i = 0; i < 10; i++) {
[myArray addObject:@(i)];
}
NSLog(@"myArray:\n%@", myArray);