2016-07-28 7 views
0

stackoverflow questionで説明したリーダー/ライターのパターンがUIの更新にどのように作用しますか? UICollectionViewのデータソースに対して、(その質問に記載されているような)リーダライタパターンの配列を使用している場合、コレクションビューのinsert/delete/reloadメソッド呼び出しはどのように使用されますか?簡単に言えば、UI部分がどのようにこのようなリーダー - ライターパターンコードに適合するかを知りたいですか?Swift:配列リーダーライターパターンとUICollectionView更新

答えて

0

UI上の何かがメインスレッドで実行されなければならず、オブジェクトの配列はスレッドセーフではありません。したがって、メインスレッド以外のスレッドからデータを編集し、メインスレッドからUI用にデータを読み込む場合は、予期しない問題が発生する可能性があります。リンクからのリーダ/ライタのパターンは、書き込みが次々に(同期的に)起こることを確実にすることによってスレッドの安全性を保証します。バックグラウンドスレッドからデータソースを編集し、アプリケーションが頻繁にクラッシュすることなく、メインスレッドのuicollectionviewを安全に更新することができます。

ただし、データソースにコアデータオブジェクトが含まれている場合は、メインスレッドで実行される管理対象オブジェクトコンテキストからオブジェクトをフェッチする必要があります。バックグラウンドスレッドで実行される管理対象オブジェクトコンテキストを使用してデータを編集する場合は、親コンテキストに変更をプッシュしてから、データを使用してコレクションビューを更新する前にメインスレッドで実行されるmocを使用して変更を読み取る必要があります。このような場合、リーダ/ライターのパターンはあなたを助けません。

関連する問題