ASIHttpRequest NetworkQueue проблема - PullRequest
0 голосов
/ 01 ноября 2009

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

это мой код для вызова их просмотра

QueueViewController * queueViewController = [[QueueViewController alloc] initWithNibName: @ "Queue" bundle: nil]; [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 не вызывается, когда загрузка завершена.

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

Я исправил проблему, проблема была в том, что я не был выделен networkQueue.

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

1 голос
/ 02 ноября 2009

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

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

...