problema ASIHttpRequest NetworkQueue
-
11-09-2019 - |
Pergunta
Eu quero usar a biblioteca ASIHttprequest o download de alguns arquivos, estou testando com o seu código e ele não está funcionando, enquanto as mesmas obras de código em sua amostra
este é o meu código para chamar sua visão
QueueViewController * QueueViewController = [[QueueViewController alloc] initWithNibName: @ "Fila" pacote: nil]; [self.view addSubview: queueViewController.view];
Este é o código para fazer o pedido
- (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];
}
}
}
Parece que a fila está sendo configurado corretamente mas o método imageFetchComplete não está sendo chamado quando o download é feito.
Solução 2
Eu tenho o problema corrigido, o problema era que eu não era alloc networkQueue.
Eu estava alloc networkQueue na awakeFromNib não estava sendo chamado. Então eu alloc networkQueue no método clique de botão. Isso corrigiu o problema.
Outras dicas
Tente configurar requestDidFailSelector
em sua instância de ASINetworkQueue
, bem como a criação didFinishSelector
e didFailSelector
em cada instância de ASIHTTPRequest
. Chamada NSLog () de cada um desses métodos de retorno de chamada no seu delegado para ver o que está acontecendo.
Note que ao permitir showAccurateProgress
em seu ASINetworkQueue
, um pedido HEAD adicional é feito para cada solicitação que os processos de fila. Isto às vezes pode ser inferior a ideal em um contexto móvel.