在iphone操作系统中使用NSOperationQueue和NSOperation的问题

在iphone操作系统中使用NSOperationQueue和NSOperation的问题,iphone,nsoperation,nsoperationqueue,Iphone,Nsoperation,Nsoperationqueue,Im使用NSOperation执行一项任务:使用NSURLConnection下载一些文件,然后合并花费大量cpu和内存的文件 我需要在新/后台线程中执行任务 因此,我将这些任务添加到NSOperationQueue中,并设置maxConcurrentOperationCount=2 但结果是,当合并文件时,它将阻止主线程(UI暂时不响应) ,它似乎不在新/后台线程中执行 如何让它像我预期的那样进行?您在NSOperationQueue中加入了什么类型的操作?Apple的NSOperationQ

Im使用NSOperation执行一项任务:使用NSURLConnection下载一些文件,然后合并花费大量cpu和内存的文件
我需要在新/后台线程中执行任务
因此,我将这些任务添加到NSOperationQueue中,并设置maxConcurrentOperationCount=2
但结果是,当合并文件时,它将阻止主线程(UI暂时不响应) ,它似乎不在新/后台线程中执行

如何让它像我预期的那样进行?

您在NSOperationQueue中加入了什么类型的操作?Apple的NSOperationQueue文档包括以下注释:

注意:在iOS中,操作队列不会 使用grandcentraldispatch执行 操作。它们创建单独的 用于非并发操作的线程 并从 当前线程。讨论 两种方法的区别是什么 和非并发操作,以及如何 它们将被执行,请参见NSOperation类参考


由于您使用的是NSOperationqueue,因此一次只有两个文件,并且您只能合并它们,因为所有其他线程或文件都不存在


因此,要将它们合并在一起,您必须同时将它们保持在一起

我将并发操作放在NSOperationQueue中,并在每个操作中启动后台线程以使用PerformSelectorInBackground方法合并文件,但在合并文件时仍会阻塞UI