2016-08-27 47 views
0

私たちは私たちのiOSアプリケーションのデータストアとして(Swift)Realmを採用しており、これまでのところ本当に満足しています。 Realmとマルチスレッドでのオブジェクトの検索と格納の設計に関する質問があります。RealmオブジェクトをメインUIスレッドに読み込むことは可能ですか?

メインUIスレッドにオブジェクトをロードすることはできますか?

  • 領域でロードされたオブジェクトはスレッド間で共有できないという制約があります。
  • まだパフォーマンスの問題はありませんが、これまでのところすべての種類のリソースをバックグラウンドスレッドにロードする方法がありました。
  • データをロードしてフィルタリングして通知ブロックを登録する場合、メインのUIスレッドの使用には問題はありませんが、たとえばすべてのデータをテーブルビュー?

答えて

1

メインUIスレッドでオブジェクトをロードすることが許容できますか?

はい、ほとんどの場合*受け入れられ、十分に速いです。データベースから読み取ってユーザーをブロックすることは許容されませんが、フォルトのような概念がないため、読み取りアクセスは常に高速に予測できます。 本当に複雑なオブジェクトグラフがある場合、UIでオブジェクトを表示できるように前処理を重視する必要がある場合にのみ、適切なユーザーエクスペリエンスを保証するためにバックグラウンドスレッドおよび/またはキャッシングを使用することは理にかなっています。

データをロードしてフィルタリングして通知ブロックを登録する場合、メインのUIスレッドの使用には問題はありませんが、例えば表示したい状況すべてのデータはテーブルビューにありますか?

UITableViewは、現在画面に表示されているビューセルのみを要求し、ビューコンテナを再利用します。レルムのコレクションは、この怠惰な性質の点で似ています。フィルタリングしないと、オブジェクトを取り除くオブジェクトのオブジェクトアクセッサーしか得られないため、メモリの負荷が大きくなりません。レルムResultsまたはListのコレクションに頼っている限り、改ページは必要ありません。レルムでサポートされていない方法でカスタムおよび複雑なフィルタを適用する必要がある場合のみ、バックグラウンドスレッドで処理する必要があります。

関連する問題