我应该在这个完整的场景中使用操作队列吗?

时间:2016-12-22 08:47:49

标签: ios nsurlsession nsoperation nsoperationqueue nsurlsessiondownloadtask

我需要执行以下步骤的方案:

  1. 使用用户提供的某些搜索参数进行网络通话
  2. 然后,解析其JSON响应并创建模型实体
  3. 然后,对于创建的每个实体以及它是否具有关联的图像URL,调用相应的服务以下载此类图像,并在下载完成后在UICollectionView中显示该图像。
  4. 我需要在下载我需要的N个图像时处理并发网络呼叫。用户应该可以取消当前的搜索流程并开始新的搜索流程。此外,我应该考虑到某个图像的单元格尚未显示或已经出列。所以,我的问题是:哪种方法最好?

    • 使用URLSessionURLSessionDownloadTask直接执行第一次网络调用(无并发)和JSON响应解析,并使用OperationOperationQueue进行后续步骤。如果用户想要取消当前搜索,请invalidateAndCancel()使用URLSessioncancelAllOperations()使用OperationQueue
    • 使用OperationOperationQueue
    • 执行整个过程
    • 还有其他更合适的方法吗?

2 个答案:

答案 0 :(得分:0)

最好的方法是进行同步或异步调用以进行第一次服务调用。完成后,同步解析json,然后使用延迟加载概念(异步调用)加载,如果要下载任何图像以显示图像。

答案 1 :(得分:0)

执行网络呼叫,然后创建模型对象。通过API完成块将这些内容返回给VC。

然后重新加载你的集合视图并将url传递给每个单元格并让每个单元格自己担心,使用类似SDWebImage的东西在单元格中显示图像异步..