malloc的這樣保存/加載2D數組c與的NSKeyedArchiver
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
地址,然後當我加載數據就沒有指向更正確的數據? 還是我跟在 Documentation
中描述的「字節順序」一個問題,如果它是地址的問題,我應該把一個for循環保存到*int
轉換爲NSData的然後保存所有這些,並重新創建**int
與時另一個for循環/ malloc?
+1表示內存不在連續塊中。另外,Keith實際上是將這些指針與數據一起歸檔。您不應歸檔指針,因爲它們在未歸檔時都會出錯(指針每次都會有所不同)。 – 2009-07-21 22:57:22