ASIHttpRequest NetworkQueue Problem
-
11-09-2019 - |
Frage
Ich mag die ASIHttprequest Bibliothek verwenden, um einige Dateien herunterladen, den ich mit ihrem Code mich entschieden und es nicht funktioniert, während der gleiche Code auf ihrer Probe funktioniert
Das ist mein Code ihrer Sicht zu nennen
QueueViewController * QueueViewController = [[QueueViewController alloc] initWithNibName: @ "Queue" Bundle: nil]; [self.view addSubview: queueViewController.view];
Dies ist der Code, um den Antrag zu stellen
- (IBAction)fetchThreeImages:(id)sender
{
[imageView1 setImage:nil];
[imageView2 setImage:nil];
[imageView3 setImage:nil];
[networkQueue cancelAllOperations];
[networkQueue setDownloadProgressDelegate:progressIndicator];
[networkQueue setRequestDidFinishSelector:@selector(imageFetchComplete:)];
[networkQueue setShowAccurateProgress:[accurateProgress isOn]];
[networkQueue setDelegate:self];
ASIHTTPRequest *request;
request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/i/logo.png"]] autorelease];
[networkQueue addOperation:request];
request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/i/trailsnetwork.png"]] autorelease];
[networkQueue addOperation:request];
request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/i/sharedspace20.png"]] autorelease];
[networkQueue addOperation:request];
[networkQueue go];
}
- (void)imageFetchComplete:(ASIHTTPRequest *)request
{
UIImage *img = [UIImage imageWithData:[request responseData]];
if (img) {
if ([imageView1 image]) {
if ([imageView2 image]) {
[imageView3 setImage:img];
} else {
[imageView2 setImage:img];
}
} else {
[imageView1 setImage:img];
}
}
}
Es sieht aus wie die Warteschlange richtig sein Setup ist aber imageFetchComplete Methode nicht aufgerufen wird, wenn der Download abgeschlossen ist.
Lösung 2
Ich habe das Problem behoben, das Problem war, dass ich nicht Alloc networkQueue.
Ich war alloc networkQueue im awakeFromNib es nicht aufgerufen wurde. Also ich Alloc networkQueue im Button-Klick-Methode. Das regelte das Problem.
Andere Tipps
Versuchen Sie requestDidFailSelector
auf Ihrer Instanz von ASINetworkQueue
Einstellung sowie die Einstellung didFinishSelector
und didFailSelector
auf jede Instanz von ASIHTTPRequest
. Rufen Sie NSLog () von jedem dieser Callback-Methoden in Ihrem delegieren, um zu sehen, was passiert.
Beachten Sie, dass showAccurateProgress
auf Ihrem ASINetworkQueue
durch Aktivierung eine zusätzliche HEAD-Anforderung für jede Anforderung, dass die Warteschlange Prozesse erfolgt. Dies kann manchmal weniger als ideal in einem mobilen Kontext.