initialisation NSArray

jannold2

Membre confirmé
11 Avril 2007
55
0
39
Bonjour,
j'ai un petit probleme assez récurrent en fait :
la plupart des méthodes des objets demandent comme paramètres des pointeurs.
Mais comment faire pour les entiers ou booléens ?

ex :
Bloc de code:
NSArray *objects = [NSArray arrayWithObjects:YES, NO, 5, @"toto", nil];

ne fonctionne pas. @"unechaine" marche toujours bien mais pour les nombres je n'ai pas trouvé comment
j'ai essayé
Bloc de code:
BOOL b = YES;
NSArray *objects = [NSArray arrayWithObjects:&b, @"toto", nil];

mais ca ne marche pas non plus

aidez moi ! :)
merci d'avance
Thomas
 
Tu ne peux dans mettre dans un NSArray et les autres conteneurs que des objets qui dérivent de NSObject. Donc pour les types standards C il faut passer par des "wrapper" : pour les nombres ce sera la classe NSNumber.
 
Tu crées un NSNumber :
Bloc de code:
NSArray *objects = [NSArray arrayWithObjects:YES, NO, [NSNumber initWithInt: 5], @"toto", nil];
 
Attention, YES et NO ne sont pas non plus des objets, ça sera plus exactement:

Bloc de code:
NSArray *objects = [NSArray arrayWithObjects:[NSNumber numberWithBool:YES], [NSNumber numberWithBool:NO], [NSNumber numberWithInt: 5], @"toto", nil];

Note: Le fait d'ajouter un objet à un NSArray lui envoie un [retain]. Détruire le NSArray provoque l'envoi d'un [release] à tous les objets qu'il contient.