【问题标题】:ASIHttpRequest NetworkQueue problemASIHttpRequest NetworkQueue 问题
【发布时间】:2009-11-01 19:16:27
【问题描述】:

我想使用 ASIHttprequest 库来下载一些文件,我正在使用他们的代码进行测试,但在他们的示例上使用相同的代码时它无法正常工作

这是我调用他们视图的代码

队列视图控制器 *queueViewController = [[QueueViewController 分配] initWithNibName:@"Queue" bundle:nil]; [自我.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 方法。

【问题讨论】:

    标签: iphone iphone-sdk-3.0 asihttprequest


    【解决方案1】:

    尝试在ASINetworkQueue 的实例上设置requestDidFailSelector,并在ASIHTTPRequest 的每个实例上设置didFinishSelectordidFailSelector。从委托中的每个回调方法调用 NSLog() 以查看发生了什么。

    请注意,通过在您的ASINetworkQueue 上启用showAccurateProgress,队列处理的每个请求都会完成一个额外的 HEAD 请求。这在移动环境中有时可能不太理想。

    【讨论】:

      【解决方案2】:

      我解决了这个问题,问题是我没有分配网络队列。

      我在没有被调用的 awakefromnib 中分配 networkQueue。所以我在按钮点击方法中分配networkQueue。这解决了这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-06
        相关资源
        最近更新 更多