假设我使用另一个SDK(我无法控制)和一个异步导入1个文件的API,完成后调用完成回调函数。
以下是示例API。
我需要使用此API导入10个文件(一个接一个),但需要实现可取消性。例如,在成功导入文件1、2、3后,当正在导入文件4时,我想能够取消所有操作(导入这10个文件),这样文件4将完成(因为它已经开始了),但是文件5-10不再导入。
另外,我还需要报告导入的进度。当文件1成功导入后,我应该报告10%的进度(已完成10中的1)。
我考虑使用带有10个NSOperation的NSOperationQueue,但似乎很难进行进度报告。
func importFile(filePath: String, completion: () -> Void)
我需要使用此API导入10个文件(一个接一个),但需要实现可取消性。例如,在成功导入文件1、2、3后,当正在导入文件4时,我想能够取消所有操作(导入这10个文件),这样文件4将完成(因为它已经开始了),但是文件5-10不再导入。
另外,我还需要报告导入的进度。当文件1成功导入后,我应该报告10%的进度(已完成10中的1)。
我考虑使用带有10个NSOperation的NSOperationQueue,但似乎很难进行进度报告。
dispatch_suspend
来解决这个问题。你是在寻找仅基于NSOperation的解决方案吗? - KrishnaCA