Quelle est la façon habituelle de magasin, c-structures en NSArray
? Les avantages, les inconvénients, la gestion de la mémoire?
Notamment, quelle est la différence entre valueWithBytes
et valueWithPointer
-- soulevées par justin et le poisson-chat ci-dessous.
Voici un lien pour Apple discussion de l' valueWithBytes:objCType:
pour les futurs lecteurs...
Pour certains, la pensée latérale et la recherche de plus de performance, Evgen'a soulevé la question de l'utilisation de STL::vector
en C++.
(Cela soulève une question intéressante: est-il rapide de la bibliothèque c, pas à la différence de STL::vector
, mais beaucoup plus léger, qui permet pour les minimes "en ordre de la manipulation de tableaux" ...?)
Si la question d'origine...
Par exemple:
typedef struct _Megapoint {
float w,x,y,z;
} Megapoint;
Donc: quel est le normal, le meilleur, idiomatiques façon de stocker une structure comme ça dans un NSArray
, et comment avez-vous gérer la mémoire dans cet idiome?
Veuillez noter que je recherche précisément l'habitude idiome pour stocker des structures. Bien sûr, on pourrait éviter le problème en faisant une nouvelle petite classe. Cependant, je voudrais savoir comment l'habitude d'un langage pour l'application de structs dans un tableau, merci.
BTW voici la NSData approche qui est peut-être? pas mieux...
Megapoint p;
NSArray *a = [NSArray arrayWithObjects:
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
nil];
BTW comme un point de référence et grâce à Jarret Hardie, voici comment stocker CGPoints
et similaires, en NSArray
:
NSArray *points = [NSArray arrayWithObjects:
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
nil];
(voir Comment puis-je ajouter CGPoint objets à un NSArray la voie de la facilité?)