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 件のコメント:
コメントを投稿