Comment puis-je append des objects CGPoint à un NSArray facilement?

J’ai environ 50 objects CGPoint qui décrivent quelque chose comme un “chemin”, et je veux les append à un NSArray. Ce sera une méthode qui renverra simplement le CGPoint correspondant à un index donné. Je ne veux pas créer 50 variables comme p1 = …; p2 = …, et ainsi de suite. Existe-t-il un moyen simple de définir ces points «instantanément» lors de l’initialisation du NSArray avec des objects?

Avec UIKit Apple a ajouté le support de CGPoint à NSValue , vous pouvez donc faire:

 NSArray *points = [NSArray arrayWithObjects: [NSValue valueWithCGPoint:CGPointMake(5.5, 6.6)], [NSValue valueWithCGPoint:CGPointMake(7.7, 8.8)], nil]; 

Répertoriez autant d’instances [NSValue] que vous avez CGPoint et terminez la liste à zéro. Tous les objects de cette structure sont libérés automatiquement.

D’un autre côté, lorsque vous retirez les valeurs du tableau:

 NSValue *val = [points objectAtIndex:0]; CGPoint p = [val CGPointValue]; 

J’utilise ceci:

Créer un tableau:

 NSArray *myArray = @[[NSValue valueWithCGPoint:CGPointMake(30.0, 150.0)],[NSValue valueWithCGPoint:CGPointMake(41.67, 145.19)]]; 

Récupère le premier object CGPoint:

 CGPoint myPoint = [myArray[0] CGPointValue]; 

Avez-vous jeté un coup d’oeil à CFMutableArray ? Cela pourrait mieux fonctionner pour vous.

Vous pouvez également écrire ceci dans une manière standard C / C ++:

 CGPoint oldschool[] = { CGPointMake(5.5, 6.6), CGPointMake(7.7, 8.8) }; CGPoint p2 = oldschool[1];