0

NSCoding を使用して、プリミティブ型の 10 個の値の配列をどのようにコーディング (およびデコード) しintますか? 各整数を個別に (for ループで) エンコードします。しかし、私の配列が 100 万個の整数を保持しているとしたらどうでしょうか? ここで for ループを使用するより満足のいく代替手段はありますか?

編集(最初の回答後):デコードしますか?(@ジャスティン:あなたの答えにチェックを入れます。)

4

1 に答える 1

2

ここでパフォーマンスが問題になる場合: CFData/NSData は NSCoding に準拠しているため、シリアル化された配列の表現を NSCFData としてラップするだけです。

エンコード/デコードの詳細を編集:

int の配列は、(マシンのエンディアンに応じて) 一般的なエンディアン形式に変換する必要があります。たとえば、常にリトルエンディアンまたはビッグ エンディアンとして保存します。エンコード中に、指定されたエンディアンの整数の配列に変換し、NSData オブジェクトに渡します。次に、NSData 表現を NSCoder インスタンスに渡します。デコード時に、キーの NSData オブジェクトを受け取ります。デコード時に、マシンのネイティブ エンディアンに条件付きで変換します。OS X および iOS で使用できるバイト スワッピング ルーチンのセットの 1 つは、 で始まりますOSSwap*

または、 を参照してください-[NSCoder encodeBytes:voidPtr length:numBytes forKey:key]。このルーチンでは、クライアントがエンディアンを交換する必要もあります。

于 2010-10-04T22:22:43.980 に答える