4

使用する方法に関係なく:iOS 5の[NSURLConnection sendAsynchronousRequest]、、、SDWebImageまたはASIHTTPRequest、画像のダウンロード中にセルaleadyがデキューされた場合dequeueReusableCellWithIdentifier(呼び出された場合)、したがって、新しいラベルは「Mary」とラベル付けされる可能性がありますが、Peterは画像がダウンロードされており、ダウンロードが完了すると、ピーターの画像がメアリーのボックスに入力されます。

メアリーの画像も後でダウンロードされ、メアリーの独房に入り、ピーターの写真を隠しておくとよいでしょうが、

1)メアリーの写真のダウンロードに1〜2秒かかります(携帯電話のワイヤレスネットワークが遅いか遅れます)、またはネットワークがその時点で詰まっていますか?次に、Peterの写真がMaryという名前の横に1、2秒、または20秒間表示されます。今回ネットワーク要求が失敗した場合は、永久に表示されます。

2)メアリーのデータに「写真を表示しない」フラグなどのプライバシー設定があり、cellForRowAtIndexPath実際にダミーの画像(ダミーのアバター)をメアリーに設定しimageView、ピーターの画像をダウンロードしたら、メアリーに移動するのが最悪です。セルと交換されることはありません。

これはエレガントに処理または解決できますか?

ちなみに、SDWebImageまたはを使用した場合ASIHTTPRequest、問題はそこにあるのでしょうか、それともクラスですでに処理されているのでしょうか。

4

1 に答える 1

2

このUITableViewCell方法-prepareForReuseは、未処理のネットワークリクエストをキャンセルしたり、不要なキャッシュを破棄したりする絶好の機会です。

+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]リクエストをキャンセルする方法を直接提供することはできませんが、リクエストを開始する前にプロパティまたはivarを設定し、完了ハンドラーをチェックして、現在の値が期待どおりであることを確認すると、同様の結果が得られます。効果。

于 2012-09-05T03:55:20.277 に答える