0

私はUIImageViewを持っています。この imageView の画像は Web から読み込まれます。ロードを停止する方法を誰か教えてください。

これは私のコードです:

UIImageView *currentImgView = (UIImageView *)[self.scrollView viewWithTag:self.pageControl.currentPage + 500];
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            UIImage *newImg = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[[[self.imagesStructure valueForKey:DATA_PARAMETER] objectAtIndex:self.pageControl.currentPage] valueForKey:@"source"]]]];
            dispatch_async(dispatch_get_main_queue(), ^{
                currentImgView.image = newImg;
                [self hideActivityView];
            });

        }); 
4

2 に答える 2

3

でこれを行うことはできませんdataWithContentsOfURL:NSURLConnectionではなく、 を使用してデータをダウンロードするように切り替える必要がありますdispatch_async。その後、呼び出し[connection cancel]てダウンロードを停止できます。この設定の詳細については、URL ローディング システムを参照してください。

ほとんどの場合、ファイルが非常に大きい場合を除き、ダウンロードをキャンセルする価値はありません。キャンセルしようと思ったときには、データはすでに処理中であることが多く、キャンセルしようとするよりも破棄したほうがよいかもしれません (とにかく取得することになるからです)。

このアプローチを実装するには、ラインの直前にキャンセルを確認しますcurrentImgView.image = newImg。とにかくこれを行う必要があります (ダウンロードしてからメイン キューが再度実行されるまでの間にダウンロードがキャンセルされた可能性があるため)。この問題に対処する良い方法は、を使用することです。便利な方法NSOperarationにアクセスできるからです。cancel操作をキャンセルすると、フラグが設定されるだけであることに注意してください。そのフラグを確認して処理を停止するのはあなた次第です。

于 2013-12-06T15:52:52.373 に答える