1

過去数日間、かなりの量の調査を行ってきましたが、同時コア データの現在のベスト プラクティスが何であるかはわかりません。最も関連性の高い投稿はこのブログ投稿のようですが、さまざまな同時実行メソッドのパフォーマンスに関するこの分析に照らしてみると、親コンテキストを使用した最新の方法は最適ではない可能性があります。また、 Apple からのこの例は、デフォルトの NSConfinementConcurrencyType を使用しないことを推奨 するApple 独自の同時実行ガイドに記載されているベスト プラクティスを実装していません。

これらすべてに照らして、Core Data で同時実行を実装する最も簡単で最良の方法は何ですか? 必要なのは、UI をハングアップさせずに Core Data への長時間の書き込みを行うバックグラウンド スレッドだけです。コード例は高く評価されています。

4

2 に答える 2

0

いつものように、それはあなたが達成しようとしていることに大きく依存します。

「長い書き込み」は、実装するアーキテクチャに関係なく、UI をハングアップさせます。
書き込み操作は、OS レベルと sqlite エンジン レベルで DB ファイルをロックします (この種のストアを使用する場合)。保留中のすべての読み取り操作は、完了する前に書き込みが終了するまで待機する必要があります。
最もよく使用される最適化方法の 1 つは、データベースの「ロード」プロセスを複数の保存操作に分割することです (これはバックグラウンドで行われるため、気にする必要はありません)。

したがって、質問に答えるには:
最も簡単な方法は、おそらく、あなたが言及したブログ投稿 (親子階層) で説明されているアーキテクチャを使用することです。これが UI の多くの「スタッター」を引き起こしていることに気付いた場合は、データ ロード プロセスを最適化するか、別のアーキテクチャを試してください。
計測器を使用して、アプリケーション実行の「ボトルネック」を見つけます。

CodeData には、私が知っているすべてのアーキテクチャに「癖」/バグがあり、使用方法に応じて、徐々に見つけることができます。

于 2013-11-04T05:35:58.707 に答える