Ios 我应该在这个完整的场景中使用操作队列吗?
我需要执行以下步骤的场景:Ios 我应该在这个完整的场景中使用操作队列吗?,ios,nsurlsession,nsoperation,nsoperationqueue,nsurlsessiondownloadtask,Ios,Nsurlsession,Nsoperation,Nsoperationqueue,Nsurlsessiondownloadtask,我需要执行以下步骤的场景: 使用用户提供的一些搜索参数进行网络呼叫 然后,解析其JSON响应并创建模型实体 然后,对于创建的每个实体,如果其具有关联的图像URL,则调用相应的服务下载此类图像,并在下载完成时在UICollectionView中显示该图像 下载需要的N个映像时,我需要处理并发网络调用。用户应该有可能取消当前搜索流并启动一个新的搜索流。此外,我应该考虑到某个图像的单元格尚未显示或已退出队列。所以,我的问题是:哪种方法是最好的 直接使用URLSession和URLSessionDow
UICollectionView
中显示该图像- 直接使用
和URLSession
执行第一个网络调用(无并发)和JSON响应解析,并使用URLSessionDownloadTask
和Operation
执行后续步骤。如果用户要取消当前搜索,请对OperationQueue
使用URLSession
,对invalidateAndCancel()
使用OperationQueue
cancelAllOperations()
- 使用
和操作
执行整个过程操作队列
- 还有其他更合适的方法吗
- 最好的方法是执行同步或异步调用以进行第一次服务调用。完成后,同步解析json,然后使用延迟加载概念(异步调用)加载任何要下载的图像以显示图像 执行网络调用,然后创建模型对象。通过API完成块将这些返回给VC
然后重新加载集合视图并将url传递给每个单元格,让每个单元格都为自己担心,使用类似SDWebImage的内容在单元格中异步显示图像。用于后续网络调用,因为使用NSOperationQueue,这些图像之间没有依赖关系或优先级(在这种情况下,我能想到的主要好处是依赖性和优先权)我相信这不会增加任何价值。您可以启动NSURLSession的多个数据任务,然后在URLSession上调用invalidateAndCancel是有意义的。但是,为了下载图像并在CollectionView中显示它,我更喜欢使用SDWebImage。它会广泛缓存、下载图像并自行更新UI,并在collect中高效地显示图像ionView/tableView:DSync网络调用!!!嗯,这很有趣,NSURLSession的哪个API进行同步调用???据我所知,网络调用没有同步API不是NSURLSession。NSURLSession或URLSession完全是一个异步服务调用。你可以使用过时的NSURLConnection。尽管我看不出有必要使用你这样做。很抱歉,我的问题的标题可能有点混乱……实际上我的问题是关于使用
URLSession
s或(异步)Operations
sURLSession进行服务调用,使用Operation queue/URLSession进行图像下载。