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ページもよろしくお願いします
記事の投稿者
a.takeuchi a