Objective-Cの構造体をNSMutableArrayで扱う

Objective-Cではオブジェクトを可変型の配列として扱うことのできるNSMutableArray(NSMutableDictionary)クラスがあります。しかし、これらのクラスではオブジェクトしか配列にすることしかできず、構造体を配列にすることができません。そこで、NSValueを用いて構造体をNSMutableArrayに追加して見ました

NSMutableArray *rangeArray = [[NSMutableArray alloc] init];

for (int i=0; i<10 ;i++){
 NSRange range = {i,1};
 NSLog(@”range:%d,%d”,range.location,range.length);
 NSValue* val = [NSValue valueWithBytes:&range objCType:@encode(NSRange)];
 [rangeArray addObject:val];
}

NSEnumerator *ranges = [rangeArray objectEnumerator];
id obj;
while ((obj = [ranges nextObject])) {
 NSRange range;
 [obj getValue:&range];
 NSLog(@”range:%d,%d”,range.location,range.length);
}

ほかにも、構造体に添え字をつけて配列にしたり、mallocで動的に確保することができますが、可変にすることができません。構造体のみを可変の配列にすることはあまりないかもしれませんが、この方法で可変の構造体を扱うことができました。

Facebookページもよろしくお願いします

CATEGORIES eラーニング, 北海道ラボby.yasu.tanaka1 Comments2010.09.07
TAGS , ,  
記事の投稿者
田中 康英
eラーニング支援部です。ときにメールマガジンを書き、ときにブログを書き、ときにソフトを翻訳し、ときに問い合わせに返信し、ときにUstreamスタジオの準備をし、とそんな感じでお仕事しています。

Facebook comments:

コメントをどうぞ

Eメールアドレスは公開されません。

Trackback URL

管理者の承認後に表示します。無関係な内容や、リンクだけで意見や感想のないものは承認しません。