下载多个图像

时间:2011-11-08 08:20:42

标签: iphone objective-c ios4

我必须在单个单元格中显示11个图像,所有图像都是从服务器下载的,所以当我的tableview显示时,我想从服务器上下载所有图像&在自定义单元格中显示它。我使用了lazyloading示例代码。但是t可以一次下载1张图像。根据我的要求,这是不可行的。有什么方法可以解决这个问题吗?

5 个答案:

答案 0 :(得分:2)

  1. 使用 -
  2. 为从服务器下载的每个图像创建一个线程
    [NSThread detachNewThreadSelector:@selector(downloadImage:) toTarget:self withObject:@"Image URL"];
    
    1. 向服务器发送请求以使用线程块检索图像。
    2. -(void)downloadImage:(NSString *)inURL {
              NSAutoreleasePool *thePool = [[NSAutoreleasePool alloc]init];
              UIImage *theImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:inURl]];
              [self performSelectorOnMainThread:@selector(uploadImage:) withObject:theImage waitUntilDone:NO];
              [thePool drain];
          }
      
      1. 更新图像,以便查看。视图只能由主线程更改。
      2. -(void)uploadImage:(UIImage *)inImage {
            [inImage retain]; // add image to View.[inImage relese];
        }
        

答案 1 :(得分:1)

我喜欢使用ASIHTTPRequest and ASINetworkQueue同时下载多个项目,它非常简单但功能强大且可扩展。您将逐个获得请求完成回调,并可以在下载图像时显示图像,您还可以轻松跟踪单个下载和整个队列的进度。

  

使用您创建的NSOperationQueue(或ASINetworkQueue,见下文)   您自己可以更好地控制异步请求。使用时   一个队列,只有一定数量的请求可以同时运行。   如果添加的请求多于队列的maxConcurrentOperationCount   属性,请求将在他们开始之前等待其他人完成。

答案 2 :(得分:0)

我想你只调用一次服务器端代码;您需要为要下载的每个图像调用一次。 如果您使用代理人,则必须为要下载的所有图像调用它。

答案 3 :(得分:0)

从概念上讲,为了同时下载多个图像(这是您要实现的目标),您必须在线程中实现图像下载请求。

下载完成后发送通知并处理相同内容以在UI上加载新下载的图像。

祝您好运..!

答案 4 :(得分:0)

AsyncimageView是满足需求的完美解决方案。请看这里: http://www.markj.net/iphone-asynchronous-table-image/