Проблема с ASIHttpRequest NetworkQueue

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

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

QueueViewController * queueViewController = [[выделение QueueViewController] 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 не вызывается после завершения загрузки.


person iosdevnyc    schedule 01.11.2009    source источник


Ответы (2)


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

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

person Nathan de Vries    schedule 02.11.2009

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

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

person iosdevnyc    schedule 02.11.2009