NSArray の代わりに double[] を使用しています。アーカイブ用にエンコードする方法を知っている人はいますか
2 に答える
1
次の 2 つのオプションが思い浮かびます。
NSArray
オブジェクトのに変換しNSNumber
ます。NSValue
またはNSData
オブジェクトにそれを靴べらします。
于 2010-03-31T01:27:44.077 に答える
0
エンコードされたデータをプラットフォーム間で転送しない場合は、エンディアンとデータ サイズの問題が発生する可能性があります。
- (void)encodeBytes:(const uint8_t*)bytesp length:(NSUInteger)lenv forKey:(NSString*)key;
バイトを直接格納し、次に
- (const uint8_t*)decodeBytesForKey:(NSString*)key returnedLength:(NSUInteger*)lengthp;
それらをデコードします。NSCoder ヘッダー ファイルが指摘するように、decodeBytesForKey:returnedLength: メソッドは不変のバイトを返すため、返された配列を malloced double 配列にコピーする必要があります。返される配列は const であるため、デコーダーがその配列を所有しており、デコーダーの割り当てが解除されると解放されると想定しています。
これは、単に配列を NSData オブジェクトに入れてアーカイブするほど便利ではありませんが、一時オブジェクトを作成するオーバーヘッドを回避できます。
于 2011-10-11T18:49:43.583 に答える