2009-11-01 1 views
0

Я хочу использовать библиотеку ASIHttprequest загрузить некоторые файлы, я тестирую с их кодом, и она не работает, а тот же код работает на их выборкеASIHttpRequest NetworkQueue проблема

это мой код, чтобы назвать их мнение

queueViewController * queueViewController = [[queueViewController Alloc] initWithNibName: @ "Очередь" расслоение: ноль]; [self.view addSubview: queueViewController.view];

Это код, чтобы сделать запрос

- (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]; 
     } 
    } 
} 

Это выглядит как очередь быть настроен правильно, но метод imageFetchComplete не вызывается, когда загрузка выполняется.

ответ

1

У меня проблема, проблема в том, что я не выделял networkQueue.

Я распределил networkQueue в awakefromnib, которого он не вызывал. Поэтому я выделяю networkQueue в методе нажатия кнопки. Это исправление проблемы.

1

Try установка requestDidFailSelector на вашем экземпляре ASINetworkQueue, а также установка didFinishSelector и на каждом экземпляре ASIHTTPRequest. Вызовите NSLog() из каждого из этих методов обратного вызова в своем делегате, чтобы узнать, что происходит.

Обратите внимание, что при включении showAccurateProgress на ваш ASINetworkQueue выполняется дополнительный запрос HEAD для каждого запроса, который обрабатывает очередь. Иногда это может быть меньше идеального в мобильном контексте.