2013-08-09 17 views

risposta

5

E 'sicuro da usare NSCoder :: encodeInteger: Forkey: e NSCoder :: decodeIntegerForKey: metodi per che?

Sì, è sicuro, perché tutte le architetture su OS X e iOS utilizzano il complemento a due per rappresentare i numeri con segno. Ad esempio, (usando un'architettura a 32 bit), in

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

n viene convertito in un numero intero con segno con la stessa rappresentazione memoria, che è -1.

E in

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

l'intero con segno -1 viene riconvertito in un intero senza segno con la stessa rappresentazione della memoria, in modo da ottenere di nuovo il valore originale.

+0

Questa risposta è valida per l'architettura a 64 bit? – rmtheis

+0

@rmtheis: Sì, sono abbastanza sicuro che lo faccia (NSUInteger è un numero intero a 64 bit su architetture a 64 bit. Ho appena dato un esempio per 32-bit). –