草庐IT

nsoperation

全部标签

iphone - NSInvocationOperation 和 NSBlockOperation 有什么区别

FoundationFramework中共有三个操作类(NSOperation、NSInvocationOperation和NSBlockOperation)。我已经阅读了concurrencyprogrammingguide但是我不明白这三个类之间到底有什么区别。请帮我。 最佳答案 NSBlockOperation执行一个block。NSInvocationOperation执行NSInvocation(或由目标、选择器、对象定义的方法)。NSOperation必须被子类化,它提供了最大的灵active但需要最多的代码。NSBlo

objective-c - 为什么我应该为高级应用程序选择 GCD 而不是 NSOperation 和 block ?

Apple的GrandCentralDispatch引用资料说:"...ifyourapplicationneedstooperateattheUnixlevelofthesystem—forexample,ifitneedstomanipulatefiledescriptors,Machports,signals,ortimers.GCDisnotrestrictedtosystem-levelapplications,butbeforeyouuseitforhigher-levelapplications,youshouldconsiderwhethersimilarfunctio

objective-c - 为什么我应该为高级应用程序选择 GCD 而不是 NSOperation 和 block ?

Apple的GrandCentralDispatch引用资料说:"...ifyourapplicationneedstooperateattheUnixlevelofthesystem—forexample,ifitneedstomanipulatefiledescriptors,Machports,signals,ortimers.GCDisnotrestrictedtosystem-levelapplications,butbeforeyouuseitforhigher-levelapplications,youshouldconsiderwhethersimilarfunctio

swift - 尝试理解异步操作子类

我正在尝试开始使用Operations在一个副项目中,而不是在我的网络代码中散布基于闭包的回调,以帮助消除嵌套调用。所以我正在阅读有关该主题的一些资料,然后遇到了this实现:openclassAsynchronousOperation:Operation{//MARK:-PropertiesprivateletstateQueue=DispatchQueue(label:"asynchronous.operation.state",attributes:.concurrent)privatevarrawState=OperationState.readyprivatedynamicv

swift - 尝试理解异步操作子类

我正在尝试开始使用Operations在一个副项目中,而不是在我的网络代码中散布基于闭包的回调,以帮助消除嵌套调用。所以我正在阅读有关该主题的一些资料,然后遇到了this实现:openclassAsynchronousOperation:Operation{//MARK:-PropertiesprivateletstateQueue=DispatchQueue(label:"asynchronous.operation.state",attributes:.concurrent)privatevarrawState=OperationState.readyprivatedynamicv

ios - 在依赖于它们的 NSOperation 对象中处理从多个 NSOperation 对象返回的数据

我正在编写一个网络连接的应用程序,它需要执行多个异步请求来加载依赖树中较低层所需的数据。图1.出于可视化目的,考虑一个ASIHTTPRequestsA、B、C、D、E和F的示例:A的url取决于B和C的结果,B的url取决于D、E、F的结果。B和C可以并发计算,D、E和F也可以。NSOperationQueue=[(D,E,F),(B,C),A]到目前为止,我已经创建了一个包含ASIHTTPRequests依赖树的NSOperationQueue。但是,ASIHTTPRequests的URL应该取决于先前操作的结果,而现在,它们并没有。问题将多个NSOperations执行的计算结果传

ios - 如果使用 [NSOperation start] 手动执行,NSOperation 会在哪个线程上运行?

我想在当前执行的线程上同步执行一个NSOperation。我可以只调用[NSOperationstart]吗?这是否总是在当前正在执行的线程中运行?另一种方法是创建一个NSOperationQueue,添加操作,然后调用waitUntilAllOperationsFinished选择器。 最佳答案 如果调用[NSOperationstart],它将在当前线程上同步执行。围绕操作的所有异步工作都由NSOperationQueue处理,但如果您自己调用-start那么您将绕过所有这些。当然,可以实现一个特定的NSOperation子类来

ios - maxConcurrentOperationCount = 1 的 NSOperation 和 NSOperationQueue

我想用NSOperationQueue实现一个串行队列。所以我为我的NSOperationQueue设置了maxConcurrentOperationCount=1。现在有几个问题现在我还需要在子类NSOperation中将concurrent设置为YES以使其串行化吗?如果我为NSOperation设置concurrent为YES,虽然maxConcurrentOperationCount为1,我仍然可以让2个或更多NSOperations并行运行吗?? 最佳答案 根据我的阅读方式Apple'sdocumentation,NSOp

objective-c - 可取消的 NSOperation 与 NSURLConnection

我正在编写一个NSOperation以通过NSURLConnection发出Web服务请求。我想让NSOperation能够被取消,以便在必要时可以中断长时间运行的HTTP请求。如果我同步发出HTTP请求,它将阻塞线程并且我无法检查isCancelled以提前终止。从NSOperation异步发出HTTP请求对我来说没有意义(委托(delegate)方法在哪里?)。执行此操作的最佳方法是什么? 最佳答案 我建议使用ASIHTTPRequest对于这类问题。ASIHTTPRequest对象是NSOperation的子类,支持取消、自定

ios - 取消操作时不调用 NSOperation dealloc

我在我的应用程序中使用NSOperation。创建另一个操作时,我正在取消先前执行的操作。但是之前创建的操作的dealloc方法在取消该操作时没有调用。请建议我。谢谢。 最佳答案 我认为您需要的是isFinished返回YES并且isExecuting在取消后返回NO。否则永远不会释放操作对象。文档说。Inadditiontosimplyexitingwhenanoperationiscancelled,itisalsoimportantthatyoumoveacancelledoperationtotheappropriatefi