私は多くのトピックを見てきましたが、まだ理解できません。
コンテンツをオンラインでダウンロードする UITableview があります。各セルには画像があり、GCD を使用して画像をダウンロードします。ダウンロードされたイメージはディスクに保存され、セルがロードされるたびに、ファイルが既に存在するかどうかがチェックされます。存在しない場合は -> gcd、nsdata などです。
誰かが良好なインターネット接続 (wifi) を持っている場合はすべてうまくいきますが、私の安っぽい 3G 接続で View から View に (行ったり来たり) ホップしようとすると、何が起こるかというと、それはそのキューを終了したいということです (約4 セル)、しかし、既に新しいもの、新しいもの、新しいものが割り当てられており、最終的にユーザーは実際の UITableview が読み込まれる前に、他のものが実行される前に長い時間待たなければなりません (彼には見えません)。NSLog を使用すると、別のビューにいる場合でも、画面に表示されていた uiimages をダウンロードして作成していることがわかります。各タスクは約 100 kb であり、低速の場合 (またはインターネットに接続されていない場合でも?!)、タスクが多い場合は時間がかかる場合があります。
キャンセルできないことはわかっていますが、BOOL 変数の使用に関する他のトピックを読みましたが、実際にはわかりません。ユーザーが画面を離れたときに BOOL 変数が変更されたとしても、セルは既にキューに入っていますよね?
ユーザーが Navigationcontroller の [戻る] ボタンをタップしてビューを離れたときに、キューで使用されているブロックのデータを変更する (空にする) ことは可能ですか? そのため、ダウンロードするものは何もなく、ブロックはすぐに実行されます (やることが何もない)。では、配列newsitemsのすべての値をnilにするようなものですか?データソースを変更することは可能ですか? または待機中のブロックには、待機中に既にデータソースが含まれていますか?
次に、別の問題があります。これは、現在実行されているブロックには影響しません。
誰かが私を良い方向に向けることができますか?
ありがとうございました。
プラストー