構造体をNSArrayとかのコレクションクラスに格納したい
構造体をコレクションに放り込もうとしてはたと困りました。
対象となる構造体は保存/読み込みをブロックでごっそりやってたりして、クラスにすれば良いのはわかっているのですが、もういろいろいじりたくないなと。 (その辺りのヘルパーメソッドをちゃんと書けば済む話なのですが…)
さてどうしようかとちょっと考えて、バイト列を扱うのにNSData系がとても便利だったのを思い出し、構造体もバイト列だし、NSDataのオブジェクトにして放り込んでやればいいかなということにしてみました。
typedef struct {
int16_t yaw;
int16_t pitch;
int16_t roll;
} MyData;
NSMutabuleArray* list = [NSMutableArray array];
MyData mydata;
mydata.yaw = 12;
mydata.pitch = 34;
mydata.aroll = 56;
こんな構造体の値を放り込むのはこう
NSData* tmpdata = [NSData dataWithBytes:&mydata length:sizeof(MyData)];
[list addObject:tmpdata];
取り出す時もこれだけ
for(NSData* tmpdata in list){
MyData* mydata = (MyData*)tmpdata.bytes;
}
と、ARCでメモリ管理も楽チンだし、悪くないと思うのですが、やっぱりちゃんとクラスにした方がいいのかなぁ…実際のところどうなんでしょうか?