2

PFFile を使用して画像を保存しています。画像が既にダウンロードされている場合は、直接アクセスしたい。そうでない場合は、バックグラウンド メソッドを使用します。ただし、を使用するgetDataと、次の警告が表示されます。

Warning: A long-running operation is being executed on the main thread. 
 Break on warnBlockingOperationOnMainThread() to debug.

データが利用可能であることはわかっているので、この警告は不要であり、ログが乱雑になります。警告をトリガーせずに PFFile のデータにアクセスする方法はありますか?

4

1 に答える 1

3

データはローカルでは利用できず、getData はサーバーからデータを取得するための同期呼び出しであるため、警告が表示されます。getData が呼び出されると、メイン スレッド (UI) がブロックされ、データがダウンロードされるまですべてのアプリのやり取りが停止します。これがエラーの原因です。一般に、ダウンロードなどのバックグラウンド操作を実行するために UI をブロックすることは、非常に嫌われます。

isDataAvailablePFFileのプロパティを使用して、データがローカルで利用可能かどうかを確認します。そうでない場合はgetDataInBackgroundWithBlock:、バックグラウンドでデータをフェッチするために使用します。その呼び出しによって提供される完了メソッドを使用して、imageView を更新できます。

getData更新 -呼び出しをブロックでラップすることもできますdispatch_async。これにより、操作が別のスレッドに移動されるため、メイン スレッドから削除され、警告が取り除かれます。

于 2014-12-29T23:21:56.437 に答える