1

我有以下顺序:

  1. 启动 MBProgressHUD 微调器
  2. 使用 NSConnectionURL 下载多个图像并实现 connectionDidFinishLoading 委托以显示图像
  3. 下载所有图像后停止微调器并显示包含所有图像的父视图

我应该如何实施connectionDidFinishLoading:以确定是否下载了所有图像以便我可以停止微调器?

我应该跟踪下载次数,但是线程安全呢?

还是我应该看GCD?

4

2 回答 2

3

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

于 2012-10-17T15:43:32.600 回答
1

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

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

于 2012-10-18T13:24:01.577 回答