0

NSCoder を使用してアプリケーション内のものをアーカイブする例をいくつか見てきました

@interface MyApplicationData : NSObject <NSCoding, NSCopying> {
    NSMutableArray* items;
    NSMutableArray* categories;
}

このスレッドを参照してください。NSCoderの使い方

これによりアプリのパフォーマンスが向上するのはなぜですか? それはあなたのアプリケーションでより多くのことをしていませんか? アーカイブを使用する理由と時期を誰か教えてもらえますか?

編集済み: 本から引用した、iOS 5 プログラミングが限界を押し上げている - キャッシュを保存する方法の下: 「データのキャッシュまたは保存は、データ モデルのアーカイブとして保存するか (NSKeyedArchiver を使用)、または高レベルのデータベースを使用して行うことができます。生の SQLite のように、または Core Data のようなオブジェクトのシリアル化フレームワークを使用する..." "....NSKeyedArchiver は、NSCoding プロトコルを実装することによって実装されます。"

キャッシングには NSCoding や NSCoder を使えばパフォーマンスが向上すると思いました。キャッシングに使用するのは良い習慣ではありませんか?

前もって感謝します。

4

3 に答える 3

2

NSCodingパフォーマンスとは関係ありません。これは、オブジェクトまたはオブジェクト グラフをシリアル化するための手法であるため、永続ストレージに保存したり、ネットワーク経由で送信したりできます。

于 2012-07-26T04:06:29.050 に答える
1

これによりアプリのパフォーマンスが向上するのはなぜですか?

まあ、いくつかのコンテキストが必要です-シリアライゼーションは「パフォーマンスを向上させる」場合とそうでない場合があります。代替のシリアル化された表現よりもパフォーマンスが向上する可能性があります。それは違いを生むかもしれませんし、重要ではないかもしれません。

それはあなたのアプリケーションでより多くのことをしていませんか?

まあ、シリアル化されたオブジェクトではなく、xml/plist で表現された複雑な構造がある場合は、そうではありません。それ自体をエンコード/デコードする方法を知っているオブジェクトは、xml、json、またはその他の中間表現よりもはるかにパフォーマンスが高い可能性があります (いくつかの理由)。また、管理が容易になり、複雑な構造をより簡単に表現できます (中間のシリアライゼーション表現と比較して)。

アーカイブを使用する理由と時期を誰か教えてもらえますか?

通常、オブジェクトまたはオブジェクト グラフの状態をディスクに保存する場合、または別のマシンに転送する場合。

ドキュメント データがあり、ドキュメントが再度開かれたときにそのドキュメントを復元したいとします。プログラムは、後でオブジェクトまたはオブジェクト グラフの状態を正しく再構築する表現を作成する必要があります。

于 2012-07-26T05:37:51.593 に答える
1

なぜアーカイブ:

ユーザーの累積的なアクションを記憶する必要があるプロジェクトに取り組んでいます。これらのアクションには、画面上の多数のカスタム オブジェクトの移動が含まれます。カスタム オブジェクトの属性には、現在の位置、色、隣接オブジェクトなどが含まれていました。したがって、これらのオブジェクトは配列に格納されました。そのため、NSCoding を使用して配列をシリアル化し、アーカイブしました。次にユーザーの最後の状態を思い出す必要があるときは、アーカイブされたファイルから読み取るだけです。この機能がなければ、テーブルとフィールドを備えたある種の DB を作成して、それらの属性データを個別に保存し、必要に応じて、私の例のようにユーザーの現在の状態を再作成する必要があると思います。

于 2012-07-26T04:50:35.000 に答える