2010-09-17 83 views
2

目前我正在从互联网上检索一串图像并缩放它们,然后在我的视图中显示它们。加快加载图像

问题是我在做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]];   

    } 
} 

回答

0

应用程序应该为所有网络使用异步网络API,以避免阻止用户体验。最好避免在网络上添加线程(比如在使用NSOperationQueue时发生),因为OS已经提供了异步备选方案。

Apple提供了异步NSURLConnection,它运行良好,但使用起来有点繁琐。你可以添加一个简单的包装器,如gtm-http-fetcher,它可以在加载完成时减少异步提取到一个带有回调的单行。这样可以让您在不拖延用户界面的情况下启动viewDidLoad:方法中的所有负载。

+0

你是男人中的上帝! – TheLearner 2010-09-20 08:48:49