如何创建许多单服务ASIHTTPRequest类在请求结束后解除分配?

时间:2011-06-16 10:24:13

标签: ios architecture asynchronous asihttprequest

我在视图中显示UIImage。有时,请求的图像不在主包或用户文件夹中。 如果是这种情况,我想:

  1. 开始从远程服务器下载图像
  2. 在目标UIImageView上设置UIActivityIndi​​cator
  3. 完成下载后,将下载的图像保存在文件夹中
  4. 在UIImageView中加载UIImage并停止UIActivityIndi​​cator
  5. 处理用户在下载未完成时更改视图的情况很难。我确实希望下载能够持续到最后。另一方面,他可以进入另一个平行下载的视图。

    我用静态方法创建了一个DownloadManager + getImage:(NSString *)URL targetUIImageView:(UIImageView *)targetUIV 我希望这个方法能够使用它自己的ASIHTTPRequest来实现新的ImageDLClass,它是自己的目标(assign)UImageView。测试此目标== nil是否允许知道视图是否已取消分配。

    我无法弄清楚的是,谁将保留所有ImageDLClass实例,以及如何在下载完成后解除分配它们。

    我寻找建筑思想,我已经知道如何编码每个点。你有建筑理念吗?

    感谢您的帮助!

    kheraud

1 个答案:

答案 0 :(得分:0)

我终于使用了更好的东西。

这里的magick关键字是“userInfo”。实际上,您可以将任何内容与请求链接,并在委托方法中检索此“任何内容”。

我的架构如下:

  • 单身ImageManager
  • ImageManager有一个属性:包含尚未完成的请求的数组
  • ImageManager有一个方法可以启动ASIHTTPRequest并将此请求添加到其数组
  • 在每个请求的userInfo中都有一个指向目标UIImageView的指针
  • 创建UIActivityIndi​​catorView(带有555标签号),并在启动异步请求后作为子视图添加到目标UIImageView
  • 使用标签号
  • 删除UIActivityIndi​​catorView

如果取消分配ImageManager,则array属性允许取消和释放所有未完成的请求。

希望它可以提供帮助!

kheraud