c構造体をに保存する通常の方法は何NSArray
ですか?メリット、デメリット、メモリ処理?
注目すべきは、違いは何だvalueWithBytes
とはvalueWithPointer
-ジャスティンと以下のナマズが提起しました。
これはvalueWithBytes:objCType:
、将来の読者のためのAppleの議論へのリンクです...
いくつかの水平思考、よりパフォーマンスで見ているために、Evgenは、使用しての問題提起しているSTL::vector
中でC ++を。
(これは興味深い問題を引き起こします:STL::vector
最小限の "配列のきちんとした処理"を可能にする高速なCライブラリがありますか?
だから元の質問...
例えば:
typedef struct _Megapoint {
float w,x,y,z;
} Megapoint;
それで、そのような独自の構造をに保存するための通常の、最良の、慣用的なNSArray
方法は何ですか?そしてそのイディオムでメモリをどのように処理しますか?
構造体を格納するための通常のイディオムを具体的に探していることに注意してください。もちろん、新しい小さなクラスを作ることで問題を回避することができます。しかし、私は実際に構造体を配列に配置するための通常のイディオムがどのようにしているかを知りたいと思います。
ところでここにおそらくNSDataアプローチがありますか?最高ではない...
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];
ちなみに、参考としてJarret Hardieに感謝します。CGPoints
これは、に保存して類似する方法NSArray
です。
NSArray *points = [NSArray arrayWithObjects:
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
nil];
(CGPointオブジェクトをNSArrayに簡単に追加する方法を参照してください。)