1

我有一个数组或 urls 指向服务器上存在的图像。现在我想在滚动视图中显示图像,每行有 4 个图像。我正在考虑使用 NSOperationQueue 和 NSInvocationOperation 来异步下载图像。我使用以下网址作为参考:
http ://www.switchonthecode.com/tutorials/loading-images-asynchronously-on-iphone-using-nsinvocationoperation

但我不确定如何下载多个图像。我是否必须使用多个 NSInvocationOperation 对象运行 for 循环并将其添加到 NSOperationQueue 对象?

我正在寻找任何指导来完成我的任务。

编辑: 我已经完成以下操作,但 NSOperationQueue 无法调用 NSInvocationOperation 对象

NSOperationQueue *queue = [NSOperationQueue new];
for(int i = 0;i<rowcount;i++){
    for(int j =0; j<4;j++){
        UIButton *btnAlbum = [[UIButton alloc] initWithFrame:CGRectMake(x, y, 72, 72)];
        [btnAlbum setBackgroundImage:[UIImage imageNamed:@"placeHolder.png"] forState:UIControlStateNormal];
        btnAlbum.tag = count+100;
        //[btnAlbum addTarget:self action:@selector(viewAlbum:) forControlEvents:UIControlEventTouchUpInside];
        [scrlvw addSubview:btnAlbum];
        //[btnAlbum release];
        x = x + 80;
        count++;

        NSInvocationOperation *operation = [[NSInvocationOperation alloc] 
                                            initWithTarget:self
                                            selector:@selector(loadImage) 
                                            object:nil];

        [queue addOperation:operation]; 
        [operation release];
    }
    x = 0;
    y = y +80;
}

谢谢潘卡伊
_

4

3 回答 3

1

是的——对于您要下载的每个图像,您创建一个 NSInvocationOperation ,执行时将调用下载图像的例程。将 NSInvocationOperation 添加到队列中,该队列负责在自己的线程上执行 NSInvocationOperation。

您只需要一个队列,但每次下载都需要一个新的 NSInvocationOperation。

于 2012-01-11T07:43:59.650 回答
1

ASIHTTPRequest来救我,我能够轻松地执行我的任务。

于 2012-01-16T10:23:35.523 回答
0

为什么不使用块和 Grand Central Dispatch 来加载这些图像?看看这篇文章,看看这是否适合你。

于 2012-01-11T12:56:46.177 回答