加快图像加载速度

时间:2010-09-17 15:05:58

标签: iphone objective-c

目前,我正在从互联网上检索一堆图像并对其进行缩放,然后在我的视图中显示它们。

问题是我在viewDidLoad方法中这样做 - 所以当用户点击时,他们必须实际等待这个处理发生,然后显示视图会导致轻微的延迟。

无论如何我可以显示视图然后以某种方式引发用户在他们面前观看后加载图像 - 类似于网页加载的方式?

- (void)configureImages
{
   if ([currentHotel.hotelImages count] > 0)
   { 
     imageView1.image = [self getScaledImageFromURL: [currentHotel.hotelImages objectAtIndex:0]];
     imageView2.image = [self getScaledImageFromURL: [currentHotel.hotelImages objectAtIndex:1]];
     imageView3.image = [self getScaledImageFromURL: [currentHotel.hotelImages objectAtIndex:2]];        

   }
}

2 个答案:

答案 0 :(得分:1)

考虑NSOperation中讨论的NSOperationQueue / Concurrency Programming Guide。示例here有几个链接。

答案 1 :(得分:0)

应用应针对所有网络使用异步网络API,以避免阻止用户体验。最好避免在操作系统已经提供异步备选的网络等任务中添加线程(例如在使用NSOperationQueue时发生)。

Apple提供异步NSURLConnection,它运行良好,但使用起来有点乏味。您可以添加一个简单的包装器,如gtm-http-fetcher,它可以在加载完成时将异步提取减少到一行并带有回调。这将允许您启动viewDidLoad:方法中的所有加载,而不会拖延用户界面。