0

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 メソッドが呼び出されていません。

4

2 に答える 2

1

問題は修正されました。問題は、networkQueue を割り当てなかったことです。

呼び出されていないawakefromnibにnetworkQueueを割り当てました。ということで、ボタンクリックメソッドにnetworkQueueを割り当てます。それは問題を修正しました。

于 2009-11-02T17:35:28.407 に答える
1

requestDidFailSelectorのインスタンスで設定ASINetworkQueueするだけでなく、の各インスタンスでdidFinishSelectorとを設定してみてください。デリゲート内のこれらのコールバック メソッドのそれぞれから NSLog() を呼び出して、何が起こっているかを確認します。didFailSelectorASIHTTPRequest

showAccurateProgressで有効にするASINetworkQueueと、キューが処理するすべてのリクエストに対して追加の HEAD リクエストが実行されることに注意してください。これは、モバイル コンテキストでは理想的ではない場合があります。

于 2009-11-02T07:36:52.693 に答える