我有以下顺序:
- 启动 MBProgressHUD 微调器
- 使用 NSConnectionURL 下载多个图像并实现 connectionDidFinishLoading 委托以显示图像
- 下载所有图像后停止微调器并显示包含所有图像的父视图
我应该如何实施connectionDidFinishLoading:
以确定是否下载了所有图像以便我可以停止微调器?
我应该跟踪下载次数,但是线程安全呢?
还是我应该看GCD?
我有以下顺序:
我应该如何实施connectionDidFinishLoading:
以确定是否下载了所有图像以便我可以停止微调器?
我应该跟踪下载次数,但是线程安全呢?
还是我应该看GCD?
我将使用NSOperationQueue
并提交下载作为具有同步NSURLConnection
请求的单独块操作。您可以在那里设置最大并发操作数,这样您就不会一次下载所有内容,并且可以免费取消。跟踪完成可以简单地通过向队列提交另一个操作来完成——最后提交的操作将在所有下载完成后运行。不过,这可能需要将并发操作的数量限制为一个,因此另一种方法是监视(KVO)剩余操作的数量。当它下降到零时,你就完成了。
我应该如何实现 connectionDidFinishLoading: 以确定是否下载了所有图像以便我可以停止微调器?
我会通过跟踪活动连接的数量来做到这一点。您可以将连接本身保存在一个可变数组中并在它们完成时将其删除,或者在连接开始时增加一个计数器并在它们完成时减少它。无论哪种方式,当活动连接数达到零时,您都会删除微调器。