NSUIntegerタイプのプロパティを でエンコードおよびデコードする必要がありますNSCoder。
安全に使用できNSCoder::encodeInteger:forKey:、NSCoder::decodeIntegerForKey:その方法はありますか?
私の頭に浮かぶ別の方法は、符号なし整数をNSNumber最初にラップすることです。しかし、それはコードが増えることを意味し、私はそれがあまり好きではありません。
NSUIntegerタイプのプロパティを でエンコードおよびデコードする必要がありますNSCoder。
安全に使用できNSCoder::encodeInteger:forKey:、NSCoder::decodeIntegerForKey:その方法はありますか?
私の頭に浮かぶ別の方法は、符号なし整数をNSNumber最初にラップすることです。しかし、それはコードが増えることを意味し、私はそれがあまり好きではありません。
そのために NSCoder::encodeInteger:forKey: および NSCoder::decodeIntegerForKey: メソッドを使用しても安全ですか?
はい、安全です。OS X および iOS のすべてのアーキテクチャは、 符号付きの数値を表すために2 の補数を使用するためです。たとえば (32 ビット アーキテクチャを想定)、
NSUInteger n = 0xFFFFFFFF;
[aCoder encodeInteger:n forKey:@"n"];
nは、同じメモリ表現を持つ符号付き整数に変換され-1ます。
そして
NSUInteger n = [aDecoder decodeIntegerForKey:@"n"];
符号-1付き整数は同じメモリ表現で符号なし整数に変換されるため、元の値が返されます。