等待NSURLConnection代表完成

时间:2012-10-17 15:36:48

标签: objective-c ios cocoa-touch nsurlconnection

我有以下顺序:

  1. 启动MBProgressHUD微调器
  2. 使用NSConnectionURL下载多张图片并实施connectionDidFinishLoading委托以显示图片
  3. 下载所有图像后停止微调器并显示包含所有图像的父视图
  4. 我应该如何实施connectionDidFinishLoading:以确定是否已下载所有图像以便我可以停止微调器?

    我应该跟踪下载次数,但线程安全性如何?

    或者我应该看看GCD?

2 个答案:

答案 0 :(得分:3)

我会使用NSOperationQueue并将下载作为具有同步NSURLConnection请求的单个块操作提交。您可以在那里设置最大并发操作数,这样就不会一次下载所有内容,而且您可以免费取消。只需向队列提交另一个操作即可完成跟踪完成 - 提交的最后一个操作将在所有下载完成后运行。但这可能需要将并发操作的数量限制为一个,因此另一种方法是观察(KVO)剩余操作的数量。当它降到零时,你就完成了。

答案 1 :(得分:1)

  

我应该如何实现connectionDidFinishLoading:来确定   是否所有图像都已下载,以便我可以停止微调器?

我通过跟踪活动连接的数量来做到这一点。您可以将连接本身保存在可变数组中并在完成时将其删除,或者只在连接启动时递增计数器,并在完成时递减计数器。无论哪种方式,当活动连接数达到零时,都会删除微调器。