2012年5月11日金曜日

Objective-Cで構造体をNSLogする

どうも、俺@仕事中です。
Objective-Cで構造体をNSLogしたり、NSArrayやNSDictionaryで扱いたい場合、
例えばcocos2dのccColor3Bを

ccColor3B color = {0,0,0};
NSLog(@"%@", color);

//または
[dictionary setObject:color forKey:@"colorKey"];
のようにしてもEXC_BAD_ACCESSでエラーになります。

ここはひとつNSValueを使いましょう。
NSValue *colorValue = [NSValue valueWithBytes:&color objCType:@encode(GLubyte)];
これでインスタンス化出来る。

配列へ格納したあとの取り出しは
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:colorValue, @"key", nil];
ccColor3B color;
[(NSValue *)[dictoinary objectForKey:@"key"] getValue:&color];
とします。


以上でぇえぇぇす。

0 件のコメント: