Вопрос

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

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

QueueViewController *queueViewController = [[Выделение QueueViewController] initWithNibName:@пакет "Queue": ноль];[self.view Добавляет SUBVIEW: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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top