私はドキュメントを読んでおり、多くの場合Realm
インスタンスでrefresh
を手動で呼び出す必要はないことを理解しています。しかし、このかなり一般的なシナリオでは、完了ブロックが次の実行ループの開始前に領域を照会する可能性があるため、必要であることが判明しました。私はバックグラウンドスレッドで書き込み操作を実行することによって、善良な市民されていたが、この呼び出しに伴うオーバーヘッドがやってのポイントを破るならば、今、私はrefresh
を呼び出すために持っていることを、私は思ったんだけど思っレルムをリフレッシュするコストはいくらですか?
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[[RLMRealm defaultRealm] transactionWithBlock:^{
// Add some RLMObjects
}];
if (completion) {
dispatch_async(dispatch_get_main_queue(), ^{
[[RLMRealm defaultRealm] refresh]; // necessary if it queries realm
completion();
});
}
});
バックグラウンド処理。
だから私の質問は以下のとおりです。
1)Realm
にrefresh
を呼び出すのパフォーマンスコストとは何ですか?
2)このパターンでレルムに1つのオブジェクトを追加すると、おそらく は無意味です。このパターンでいくつのオブジェクトを追加した後、メインスレッドで書き込みトランザクションを同期して実行する代わりに利点がありますか?
非常に有益な回答です、ありがとうございます!私はその後、バックグラウンドのパターンを使用し続けます。 – skensell
@jpsimネットワークの成功/失敗ブロックのような別のブロック内でtransactionWithBlockを使用すると、通常のコミットトランザクションよりも優れていますか? – EmilDo
transactionWithBlockは文字通りbeginWriteTransaction&commitWriteTransactionのショートカットです – jpsim