【问题标题】:Speed up loading of images加快图片加载速度
【发布时间】:2010-09-17 15:05:57
【问题描述】:

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

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

   }
}

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      应用应为所有网络使用异步网络 API,以避免阻碍用户体验。对于操作系统已经提供异步替代方案的网络等任务,最好避免添加线程(例如使用 NSOperationQueue 时发生的情况)。

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

      【讨论】:

        猜你喜欢
        • 2012-02-28
        • 2019-02-15
        • 2014-12-14
        • 1970-01-01
        • 1970-01-01
        • 2015-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多