2

NSArray の代わりに double[] を使用しています。アーカイブ用にエンコードする方法を知っている人はいますか

4

2 に答える 2

1

次の 2 つのオプションが思い浮かびます。

  1. NSArrayオブジェクトのに変換しNSNumberます。
  2. 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 に答える