【问题标题】:NSURLConnection and Images Download QuestionNSURLConnection 和图片下载问题
【发布时间】:2011-06-16 12:27:57
【问题描述】:

我有一个包含大约 350 条记录的 JSON 提要。我使用 NSURLConnection 在从提要启动时下载它们。提要中的每个项目都有一个图像的 URL。我需要为其中许多提要下载图像缩略图。它与 twitter 客户端所做的非常相似(因为我也在表格视图中显示它们)。当我使用普通的 UIImage = [UIImage alloc] initWithData 等时......这将需要永远。此外,由于表格单元格在我滚动时加载,因此在加载图像时向下滚动会导致应用加载图像和糟糕的用户体验(以及延迟)。

您建议的替代方案有哪些?我在应用程序中使用 NSURLConnection:didFinishLaunch。我应该在该表视图类的视图控制器中再实现一次吗?

感谢任何建议/指导。

谢谢,

【问题讨论】:

  • 你应该接受答案,人们会更愿意提供帮助

标签: iphone objective-c ios cocoa-touch nsurlconnection


【解决方案1】:

由于您拥有图片网址,您可以使用TCWebImageView 按需下载和缓存(在文件系统中)图片。

https://github.com/totocaster/TCWebImageView

顺便说一下,这是一个不错且简单的异步图像组件。

编辑:

另一个值得一看的好库是ASIHTTPRequest 的 ASINetworkQueue(它是 NSOperationQueue 的一个很好的子类),它使它成为执行重负载(350 多个项目)下载管理的一种非常简单和健壮的方式

编辑2:

AFNetworking 库中还有另一个很好的解决方案,即AFImageRequestOperation,您可以在其中轻松使用其UIImageView 类别,无需子类化或管理下载队列。

【讨论】:

    【解决方案2】:

    您必须使用异步图像下载才能下载图像并且不会干扰其他代码的流动,而图像会随着时间的推移而下载。您可以向http://code.google.com/p/iphone-lib/wiki/AsyncImageView 寻求帮助。

    【讨论】:

      【解决方案3】:

      用户对快速启动感到高兴。

      我建议把图片放在你的应用程序中,大小可能是合理的。

      【讨论】:

      • 是的 - 但是 Twitter 应用程序如何设法保持其应用程序的快速运行?
      【解决方案4】:

      你说

      它与推特非常相似 客户会做的

      此外,由于表格单元格加载为我 滚动,加载时向下滚动 图像会导致应用程序加载 图像和糟糕的用户 经验(以及滞后)。

      我安装了 Twitterrific、Twitter 和 TweetDeck,这正是他们所做的(即加载图像,因为它们在用户滚动时变得可见)。显然,如果多次使用每张图片(因为它可能会在 twitter 时间线中),则只会下载一次并缓存。

      【讨论】:

      • 是的.. 和?我说错了吗?不管它是否缓存,这都不是问题。每个单元格都有一个独特的徽标。
      • @Nayefc,嘿,没有错,只是你想要一个类似于 twitter 的应用程序,但你不认为在滚动时加载图像会是一个好的用户体验,对吧?但这是你必须做的——这就是 Twitter 应用程序所做的。
      • 哦,好吧 - 那么我应该将我的问题重新表述为,Twitter 客户如何有效地做到这一点?正确使用 NSURLConnection 吗?
      • @Nayefc,好的 - 拥有缩略图可能是最重要的因素。在 twitter 应用程序中,用户图像大约为 90x90 像素 - 因为 jpeg 可能每个
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多