Tag: nsoperation

我如何使用NSURSession的NSOperationQueue?

我正在尝试构build一个批量图像下载器,可以将图像添加到队列中以供下载,我可以找出进度以及下载完成的时间。 通过我的阅读,似乎NSOperationQueue的队列function和NSURLSession的networkingfunction似乎是我最好的select,但我很困惑,如何使用这两个串联。 我知道我添加NSOperation实例到NSOperationQueue ,他们排队。 看来我创build一个NSURLSessionDownloadTask的下载任务,如果我需要多个任务,多个,但我不知道我怎么把这两个在一起。 NSURLSessionDownloadTaskDelegate似乎有我需要的下载进度和完成通知的所有信息,但我也需要能够停止特定的下载,停止所有下载,并处理从下载中获得的数据。

如何取消NSBlockOperation

我有一个很长的运行循环,我想用NSOperation在后台运行。 我想用一个块: NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ while(/* not canceled*/){ //do something… } }]; 问题是,如何检查是否取消。 该块没有任何参数,当它被块捕获时, operation是零。 有没有办法取消块操作?

子类化NSOperation是并发的和可取消的

我无法find有关如何将NSOperation子类NSOperation并发的良好文档,也支持取消。 我读了苹果文档,但是我找不到一个“官方”的例子。 这是我的源代码: @synthesize isExecuting = _isExecuting; @synthesize isFinished = _isFinished; @synthesize isCancelled = _isCancelled; – (BOOL)isConcurrent { return YES; } – (void)start { /* WHY SHOULD I PUT THIS ? if (![NSThread isMainThread]) { [self performSelectorOnMainThread:@selector(start) withObject:nil waitUntilDone:NO]; return; } */ [self willChangeValueForKey:@"isExecuting"]; _isExecuting = YES; [self didChangeValueForKey:@"isExecuting"]; if (_isCancelled == YES) { NSLog(@"** […]

NSOperation与大中央调度

我正在学习iOS的并发编程。 到目前为止,我已经读过NSOperation / NSOperationQueue和GCD 。 使用NSOperationQueue的原因是什么,反之亦然? 听起来像GCD和NSOperationQueue抽象的从用户显式创buildNSThreads 。 然而这两种方法之间的关系对我来说是不清楚的,所以任何反馈都要赞赏!

NSOperation在iPhone上

我一直在寻找一些具体的情况,当在NSOperation上的NSOperation是一个理想的工具,在应用程序中使用。 据我的理解,这是一个围绕你自己的threaded代码的封装。 我还没有看到任何苹果演示应用程序使用它,我想知道如果我错过了一个伟大的工具,而不是使用NSThread 。 这里的理想解决scheme是描述NSOperation的用例场景,以及如何使用它来解决您的问题。

NSOperation和NSOperationQueue工作线程vs主线程

我必须在我的应用程序中执行一系列下载和数据库写入操作。 我正在使用NSOperation和NSOperationQueue相同。 这是应用场景: 从一个地方获取所有邮编。 为每个邮政编码提取所有房屋。 为每个房子获取居民的细节 如上所述,我已经为每个任务定义了一个NSOperation 。 在第一种情况下(Task1),我发送一个请求到服务器来获取所有的邮编。 NSOperation内的NSOperation将收到数据。 这些数据被写入数据库。 数据库操作是在不同的类中定义的。 从NSOperation类我正在调用数据库类中定义的写函数。 我的问题是数据库写操作是在主线程还是在后台线程中发生? 当我在一个NSOperation调用它时,我期待它在NSOperation中运行在不同的线程(Not MainThread)中。 有人可以在处理NSOperation和NSOperationQueue时解释这种情况。

当NSOperationQueue完成所有任务时获取通知

NSOperationQueue有waitUntilAllOperationsAreFinished ,但我不想等待它同步。 我只想在队列结束时在UI中隐藏进度指示器。 什么是完成这个最好的方法? 我不能发送来自我的NSOperation的通知,因为我不知道哪一个会是最后一个,并且当收到通知时[queue operations]可能还没有空(或更糟 – 重新填充)。