2013-08-09 19 views

Antwort

5

Ist es sicher NSCoder verwenden :: encodeInteger: forKey: und NSCoder :: decodeIntegerForKey: Methoden für das?

Ja, es ist sicher, weil alle Architekturen auf OS X und iOS die Verwendung Zweier-Komplement für Zahlen mit Vorzeichen repräsentiert. Zum Beispiel (unter der Annahme eine 32-Bit-Architektur), in

NSUInteger n = 0xFFFFFFFF; 
[aCoder encodeInteger:n forKey:@"n"]; 

n auf eine vorzeichenbehaftete Ganzzahl mit der gleichen Speicherrepräsentation umgewandelt wird, die -1 ist.

Und in

NSUInteger n = [aDecoder decodeIntegerForKey:@"n"]; 

die signierte ganze Zahl -1 ist zurück auf eine ganze Zahl ohne Vorzeichen mit der gleichen Speicherdarstellung umgewandelt, so dass Sie den ursprünglichen Wert zurück.

+0

Gilt diese Antwort für die 64-Bit-Architektur? – rmtheis

+0

@rmtheis: Ja, ich bin mir ziemlich sicher, dass es (NSUInteger ist eine 64-Bit-Ganzzahl auf 64-Bit-Architekturen. Ich gab nur ein Beispiel für 32-Bit). –