0
次のコードはcellForRowAtIndexPath
です。このコードを編集する必要があります。非同期画像のダウンロード
1.)画像をダウンロードする際に問題が発生した場合、このブロックはブロックsetFailedBlock
を返します。コードにどのように追加できますか?
2.)画像がダウンロードされている間、ユーザーはビューを変更してから、このコードの実行を停止したい(ダウンロードを停止する)。私はviewdiddissapear
またはviewwilldissapear
の方法でブロックをキャンセルする必要があると思う。しかし、私はダウンロードをキャンセルするコードを書く方法を知らない。誰かが私にこれを行う方法を教えてもらえますか?
(注:このブロックはcellForRowAtIndexPath
メソッドの内部にあるので、viewdiddissapear
またはviewwilldissapear
からアクセスする必要がある)
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//this will start the image loading in bg
dispatch_async(concurrentQueue, ^{
NSData *someimageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:someimageURL]];
dispatch_async(dispatch_get_main_queue(), ^{
[cell.imageviewofsomeimage setImage:[UIImage imageWithData:someimageData ] ];
});
});
ISNが」持っていますそこにそれ自身をブロックする解決策があります。 'setFailedBlock'を設定するのと同じですか? – Illep
@Ilelep:ブロックは魔法の弾丸ではありません。適切な場所で使用してください。一見、これは適切な場所のようには見えません。なぜなら、ブロックに優しい方法はキャンセルできないからです。 – JeremyP
@JeremyPさて、それを行う正しい方法は何ですか?適切な回避策 – Illep