Malloc ähnlicheSpeichern/Laden eines 2D-Array mit 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));
}
sie verwenden. wie diese NSData konvertieren, bevor
NSData *data=[NSData dataWithBytes:terrain length:(30*sizeof(int*) +30*30*sizeof(int))];
[rootObject setValue:data forKey:@"terrain"];
[NSKeyedArchiver archiveRootObject: rootObject toFile: path];
Laden in NSData dann Umwandlung zurück zu int**
rootObject = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSData *data = [rootObject valueForKey:@"terrain"];
terrain =(int**) [data bytes];
Mit diesem Code speichern, wird es die *int
Adressen dann Speichern, wenn ich die Daten laden ist es nicht zeigen auf die richtigen Daten mehr? Oder muss ich ein Problem mit dem „Endian“ haben, wie in Documentation
beschrieben Wenn die Adresse Problem ist, sollte ich für Schleife a setzen beim Speichern *int
zu NSData konvertieren dann all jene, speichern und neu erstellen die **int
mit ein anderer für loop/malloc?
+1 für den Speicher nicht in einem kontinuierlichen Block. Außerdem archiviert Keith die Zeiger zusammen mit den Daten. Sie sollten Zeiger nicht archivieren, da sie alle falsch sind, wenn sie nicht archiviert werden (die Zeiger werden jedes Mal anders sein). –