草庐IT

NSoperation

全部标签

ios - 取消请求时 NSOperation 何时从 NSOperationQueue 中删除?

我正在阅读一些文档,解释如何在NSOperationQueue中管理NSOperation。我的重点是,如果用户在进度面板中按下取消按钮或退出应用程序,则始终完全不执行该操作。因此,取消操作以防止它不必要地消耗CPU时间。所以,每当我需要取消操作时,我应该触发cancel方法以防止进一步执行。然后我将不得不定期使用操作对象状态isCancelled来检查操作是否被取消。以下是我对此的问题:(1)在取消请求时,如果NSOperation从NSOperationQueue中删除,那么我们如何仍然引用该NSOperation及其属性isCancelled?根据AppleDeveloperCl

ios - NSOperation。取消与完成状态

我有一个NSOperation和一个NSOperationQueue,它有一堆子操作,有些在排队。我遇到了一个问题,即使在对队列调用cancelAllOperations之后,我的主要方法仍然卡在waitUntilAllOperationsAreFinished上。然后,当我在取消时设置用于isFinished的完整标志时,它不再在取消队列中备份。-(BOOL)isFinished{returncomplete;}-(void)cancel{cancelled=YES;complete=YES;[_childOperationQueuecancelAllOperations];}这是正

iphone - NSOperation 和 NSInvocationOperation 之间的区别?

1)当我们在NSoperationQueue中添加NSOperation或NSInvocationOperation时发生了什么?2)NSoperation和NSInvocationOperation有什么区别?3)哪个最好? 最佳答案 1。NSoperation和NSInvocationOperation的区别NSoperation对象是单次对象——也就是说,它只执行一次任务,不能再次执行。NSInvocationOperation类是NSOperation的具体子类,它管理指定为调用的单个封装任务的执行。您可以使用此类来启动一个

cocoa-touch - 从 NSOperation 使用 `performSelectorOnMainThread:withObject:waitUntilDone:` 有多重要?

我的iPad应用程序与XML提要同步,在从NSOperationQueue执行的NSOperation子类中运行同步。当它解析提要时,它会通过performSelectorOnMainThread:withObject:waitUntilDone:回调到主线程,以更新UI的各个部分、安排下载等。其中一些非常昂贵;随着同步的进行,用户界面有时会停止响应一两秒钟。为了使UI更具响应性,我删除了performSelectorOnMainThread:withObject:waitUntilDone:的使用,转而使用直接调用来执行所有与同步相关的任务,包括更新UI。所以现在同步完全发生在NSO

iphone - 异步 NSURLConnection 和 NSOperation - 取消

我想取消所有请求。这是我创建异步连接的方式:[NSURLConnectionsendAsynchronousRequest:echoqueue:self.queuecompletionHandler:^(NSURLResponse*respone,NSData*data,NSError*error){然后我使用这个方法:-(void)cancelAllRequests{NSLog(@"%@",self.queue.operations);[self.queuecancelAllOperations];[self.queuewaitUntilAllOperationsAreFinishe

ios - NSOperationQueue 中的 NSOperation 未被执行

我真的需要帮助。在这一点上我很绝望。我有NSOperation,当添加到NSOperationQueue时不会被触发。我添加了一些日志记录以查看NSOperation状态,结果如下:Queueoperationscount=1QueueisSuspended=0OperationisCancelled?=0OperationisConcurrent?=0OperationisFinished?=0OperationisExecuted?=0OperationisReady?=1Operationdependencies?=0代码非常简单。没什么特别的。LoadingConflictEv

ios - 核心数据的 NSOperation VS GCD

对于需要在一个线程上将数据存储在Core-Data中,在另一个线程中从Core-Data中读取数据的情况,什么更适合?我在考虑GCD,但它如何与为每个线程创建NSManagedObjectContext一起工作?如何在队列中创建这些对象?当在各种线程上进行更改时,需要更新/同步数据存储,这用GCD还是NSOperation更好?我希望能够在根据需要读取和写入数据存储时将block传递到2个队列,而不会出现损坏存储或存储不同版本的问题。 最佳答案 GCD和NSOperation之间的争论基本上可以归结为使用最高抽象级别为您提供良好解决

objective-c - 在 NSOperation 中使用 NSThread sleep

在处理一些代码时,我在NSOperation中遇到了运行循环,我是新手。NSOperation正忙于下载数据-在它们忙碌的同时,有代码等待下载完成,以NSRunLoop和线程的形式sleep。我对这段代码特别感兴趣:while(aCertainConditionIsTrue&&[selfisCancelled]==NO){if(![[NSRunLoopcurrentRunLoop]runMode:NSDefaultRunLoopModebeforeDate:[NSDatedateWithTimeIntervalSinceNow:1.0]]){[NSThreadsleepForTimeI

ios - 对于从 NSOperationQueue 运行的 NSOperation,isConcurrent 意味着什么?

因为NSOperationQueue总是在新线程上运行任务,当NSOperation从NSOperationQueue运行时,我对isConcurrent的作用感到困惑。如果我有两个NSOperation的子类,都运行一个异步进程,都从NSOperationQueue启动,并且我都覆盖了isCancelled,isExecuting、isFinished和isReady。如果一个我重写isConcurrent总是返回YES而另一个总是returnNO会有什么区别。实际上是谁调用了isConcurrent?如果是NO或YES,逻辑如何变化。 最佳答案

ios - 从 NSOperation 返回数据?

我正在创建大量的NSOperation(子类)来对一堆数据进行排序。当他们完成后,我希望他们“返回”该数据并将其放入可变数组或其他内容中。顺序无关紧要。这样的事情可能吗? 最佳答案 协议(protocol)委托(delegate)模式的替代方案是完成block。例如,在一些基于NSURLConnection的随机操作中,我定义了一个完成blocktypedef(只是为了稍后简化block语法),它返回一个NSData如果成功,或者NSError如果不成功:typedefvoid(^CustomOperationCompletionB