こんなマロック
int **terrain;
terrain = malloc(sizeof(int*) * mapSize.x);
for (int i = 0; i < mapSize.x; i++) {
terrain[i] = malloc(mapSize.y * sizeof(int));
}
これを使って。保存する前に、このように NSdata に変換します
NSData *data=[NSData dataWithBytes:terrain length:(30*sizeof(int*) +30*30*sizeof(int) )];
[rootObject setValue:data forKey:@"terrain"];
[NSKeyedArchiver archiveRootObject: rootObject toFile: path];
NSdata にロードしてから変換して戻すint**
rootObject = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSData *data = [rootObject valueForKey:@"terrain"];
terrain =(int**) [data bytes];
このコードを使用すると、*int
アドレスが保存され、データをロードすると正しいデータを指しなくなりますか? または、ドキュメントに記載されている「エンディアン」に問題がありますか?
アドレスの問題である場合、*int
NSData に変換するために保存するときに for ループを配置し、それらをすべて保存して**int
、別の for ループ/malloc で再作成する必要がありますか?