私はASINetworkQueueを使用して、特定のビューに表示される一連のイメージをダウンロードしています。UIProgressViewとASIHTTPRequestを使用したダウンロードの進捗状況の追跡
Miの問題は、要求を終了する前にビューを開いてすぐに閉じると、UIProgressViewを更新しようとするとしばらく時間がかかり、もう存在しないのでクラッシュします(EXC_BAD_ACCESS)。 (その見解は却下された)。私はビューをアンロードする前にデリゲートをnilに設定しようとしましたが、それは役に立ちません。
これは、キューを作成し、要求
- (void)doNetworkOperations
{
// Stop anything already in the queue before removing it
[[self networkQueue] cancelAllOperations];
// Creating a new queue each time we use it means we don't have to worry about clearing delegates or resetting progress tracking
[self setNetworkQueue:[ASINetworkQueue queue]];
[[self networkQueue] setDelegate:self];
// if I have little files to download, use accurate progress
// if I have lots, it's not worth it.
if ([promosInfo count]<=4) {
[[self networkQueue] setShowAccurateProgress:YES];
}
[[self networkQueue] setDownloadProgressDelegate:progressControl];
[[self networkQueue] setRequestDidFinishSelector:@selector(requestFinished:)];
[[self networkQueue] setRequestDidFailSelector:@selector(requestFailed:)];
[[self networkQueue] setQueueDidFinishSelector:@selector(queueFinished:)];
NSInteger i=0;
for (id row in promosInfo){
NSURL *url = [NSURL URLWithString: [row objectForKey:@"imgSource"]];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL: url];
[request setTag:i];
[[self networkQueue] addOperation:request];
i++;
url = nil;
request = nil;
}
[[self networkQueue] go];
}
を追加することを担当するコードの一部であり、私は、次のviewDidUnload
私は追跡を停止するASINetworkQueueに伝えるにはどうすればよい- (void)viewDidUnload
{
[[self networkQueue] setDownloadProgressDelegate:nil];
[[self networkQueue] cancelAllOperations];
[self setNetworkQueue:nil];
[self setCargando:nil];
[self setScrollView:nil];
[self setPageControl:nil];
[self setStatusLabel:nil];
[self setProgressControl:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
を持っています進捗?私が言及したように、私はデリゲートをゼロに設定しようとしましたが、うまくいかないようです。
私は、次のコードを実行され、プログレスバーの機能を実現している
私は本当にあなたの解決策を実行しますが、まだUIProgressViewにアクセスしようとしていて、不正なアクセスを取得しようとしています。 – Daniel
私は答えを編集しました、このコードをもう一度加えてみてください – Lunayo