我有以下顺序:
我应该如何实施connectionDidFinishLoading:
以确定是否已下载所有图像以便我可以停止微调器?
我应该跟踪下载次数,但线程安全性如何?
或者我应该看看GCD?
答案 0 :(得分:3)
我会使用NSOperationQueue
并将下载作为具有同步NSURLConnection
请求的单个块操作提交。您可以在那里设置最大并发操作数,这样就不会一次下载所有内容,而且您可以免费取消。只需向队列提交另一个操作即可完成跟踪完成 - 提交的最后一个操作将在所有下载完成后运行。但这可能需要将并发操作的数量限制为一个,因此另一种方法是观察(KVO)剩余操作的数量。当它降到零时,你就完成了。
答案 1 :(得分:1)
我应该如何实现connectionDidFinishLoading:来确定 是否所有图像都已下载,以便我可以停止微调器?
我通过跟踪活动连接的数量来做到这一点。您可以将连接本身保存在可变数组中并在完成时将其删除,或者只在连接启动时递增计数器,并在完成时递减计数器。无论哪种方式,当活动连接数达到零时,都会删除微调器。