【问题标题】:Adding images Asynchronously - ASIHTTPRequest异步添加图像 - ASIHTTPRequest
【发布时间】:2012-01-28 15:49:50
【问题描述】:

我正在使用ASIHTTPRequest。我在使用ASIHTTPRequest时遇到以下问题。

1.) 我需要将图像添加到UITableView(对于每个单元格)asynchronously。我该怎么做?

2.) 我需要将图像添加到 UIViewController Asynchronously。 (不是到单元格,而是在UIImageView 上,在UIViewController 上)。

有人可以帮我提供一些示例代码、示例或教程吗?

【问题讨论】:

标签: iphone objective-c ios asihttprequest


【解决方案1】:

无需引入对整个框架的依赖,例如 ASIHTTPRequest 只需下载一张图片,使用 GCD 只需几行简单的代码即可:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSData *imageDate = [NSData dataWithContentsOfURL:imageURL];
    UIImage *image = [UIImage imageWithData:imageData];
    dispatch_async(dispatch_get_main_queue(), ^{
        avatar.image = image;
    });
});

这是异步的,非常棒。但只需几行代码,您就可以编写、理解、修复错误、扩展和维护自己。

但如果你一心想使用ASIHTTPRequest,我建议使用这个优秀的项目Here是一个示例代码,有一个指导方针和a brief description.

另一种方法是您可以使用异步图像视图而不是默认图像视图。查看教程HereHow? UITableViewCell with UIImageView asynchronously loaded via ASINetworkQueue

【讨论】:

  • 你好,在一个项目中使用多个库可以吗?就像在 async-uitableview 和 ASIHTTPRequest 中一样?当您只能在 ASIHTTPRequest 中使用另一个库时,使用另一个库有什么特别之处? (我是初学者)而且简短的描述链接以 404 结尾,您能否重新链接它
  • 是的,您可以在同一个项目中使用多个库。 async-uitableview 是在 ASIHTTPRequest. async-uitableview 之上的抽象,专门解决 tableview 中图像的异步下载问题。
  • @Srikar dispatch_async - 我今天第一次看到它并使用它。感谢您提供此信息。看起来很好用。
【解决方案2】:

基本上(see example page with all the correct syntax)你所做的是

  • 创建请求。
  • 将自己设置为完成时的代表。
  • 启动请求。

在 -(void)requestFinished 中:您可以像在普通代码中一样将图像添加到 TableView。

【讨论】:

  • 我已经在使用requestFinished 来获取要在tableview 中显示的其他数据。我将收到的这些数据将包含我希望下载的图像的链接。那么如何再次使用requestFinished 来下载图片呢?
  • 当 requestFinished 被调用时,文件已经被下载,你只需使用 NSData *responseData = [request responseData];以获取实际下载的内容。
【解决方案3】:

我不确定它是否正是您要查找的内容,但请查看来自 Apple 的 lazy image loading example。但他们使用 NSURLConnection。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多