草庐IT

nsoperationqueue

全部标签

ios - 如何在前一个 dispatch_async 完成时执行第二个 dispatch_async?

我想按顺序添加一个dispatch_async,但我不希望它们随机启动。我想举个例子:dispatch_async1开始...dispatch_async1结束。dispatch_async2开始...dispatch_async2结束。dispatch_async3开始...dispatch_async3结束。我需要更新一个sqlite,第一次调度中的信息对于第二次调度是必需的...-(void)connectionDidFinishLoading:(NSURLConnection*)connection{NSLog(@"%@",[connectioncurrentRequest])

iphone - 如何取消 iOS 后台的所有 NSURLConnections

我正在使用NSURLCOnnections下载一些图像(大约200-300个缩略图)。我有这些图片的url数组。连接开始下载这些图像。但在某些情况下我想取消所有这些下载。怎么可能。我可以取消所有这些NSURLConnections吗? 最佳答案 创建NSOperationQueue并通过此队列使用NSURLConnection会更好。例如:NSOperationQueue*queue=[NSOperationQueuenew];NSInvocationOperation*operation=[[NSInvocationOperati

ios - NSOperation 用户信息字典

有没有办法让userInfoNSDictionary用于NSOperation?基本上我想为一个NSOperation分配一个ID,稍后我想检查这个ID是否已经分配给一个NSOperation-(void)processSmthForID:(NSString*)someID{for(NSOperation*operationinself.precessQueue.operations){if([operation.userInfo[@"id"]isEqualToString:someID]){//alreadydoingthisforthisID,noneedtocreateanoth

iphone - 从 NSOperationQueue 中取消 NSOperation 导致崩溃

我正在尝试构建一个下载管理器类,它将所有异步下载(每个操作都有自己的线程)操作打包到NSOperation子类中,以便稍后将它们添加到NSOperationQueue中。下载管理器类(单例)也公开了一些方法来处理队列并取消符合某些要求的操作。这些是开始创建类集群(抽象工厂)的步骤,它为不同类型的常见操作(上传、下载、解析等)返回不同类型的NSOperation。该类似乎可以很好地处理下载操作,但如果在这些操作的中间调用取消操作的方法,操作会成功取消,但应用程序稍后会崩溃。如果我不取消任何操作,一切正常。使用KVO观察所有操作。删除操作的方法如下所示:-(void)cancelDownl

ios - 如何获取 NSOperationQueue 的完成 block

这个问题在这里已经有了答案:GetnotificationwhenNSOperationQueuefinishesalltasks(16个答案)关闭8年前。如何获取NSOperationQueue的完成block,这里我想在所有操作中从开始到结束旋转事件指示器。NSOperationQueue*operationQueue=[[NSOperationQueuealloc]init];//Setthemaxnumberofconcurrentoperations(threads)[operationQueuesetMaxConcurrentOperationCount:3];[opera

ios - 使 NSOperations 互斥

请引用来自WWDC的视频https://developer.apple.com/videos/play/wwdc2015/226/演讲者展示了我们可以在两个相同类型的NSopeation实例之间添加依赖关系。显示警报的NSoperation示例。通过实现这一点,我们可以确保我们不会同时抛出多个警报并惹恼用户。如果一个警报已经显示,下一个将等待。我仍然无法弄清楚如何实现NSOperations跨队列的这种依赖性。用更简单的话来说,任何人都可以展示以下两件事的示例(实现)。1.添加队列2的操作B对队列1的操作A的依赖的实现2.实现添加相同NSOperation类型的多个实例的依赖,即使它们

ios - 如何等待 NSURLSession 的所有任务完成?

为什么在创建和恢复NSURLSessionTask后NSURLSession操作队列为空?有没有办法判断NSURLSession是否有待处理的任务?目标是等待多个任务完成,但这行不通:NSURLSessionUploadTask*uploadTask=[self.sessionuploadTaskWithStreamedRequest:request];[uploadTaskresume];//thisprints"0"NSLog(self.session.delegateQueue.operationCount)//thisreturnsimmediatelyinsteadofwai

objective-c - NSOperationQueue 中不需要锁吗?

我正在阅读Apple的文档ConcurrentProgrammingGuide,我认为OperationQueue是一系列操作。文档说我们在大多数情况下不在NSOperationQueue中使用锁。问题如何使用NSOperationQueue实现读写任务?什么时候在NSOperationQueue中使用锁? 最佳答案 操作队列不一定是串行队列。您可以通过调用[queuesetMaxConcurrentOperationCount:1]将操作队列变成串行队列。否则,默认情况下,NSOperationQueue是并发的。您通常应该设计提

objective-c - 如何从 NSOperation 获取对 NSOperationQueue 的引用?

有没有办法从同一个nsoperation中获取nsoperation所在的“父”操作队列?类似于[selfgetCurrentOperationQueue]。 最佳答案 您可以通过调用适当命名的+[NSOperationQueuecurrentQueue]来获取当前队列。从正在运行的操作内部。currentQueueReturnstheoperationqueuethatlaunchedthecurrentoperation.+(id)currentQueueReturnValueTheoperationqueuethatstart

ios - 将多个 View 插入堆栈而看不到它们之间的 View

我试图让我的应用程序在应用程序的多个部分之间切换时有持久感。当他们点击一个图标时,我希望它直接打开我所在的ViewController,但是,我需要让ViewController堆栈保持与他们离开我应用程序的那部分时的状态相同。我似乎最早可以在“viewDIDAppear”方法中展示另一个ViewController,这是有问题的,因为用户看到我在推送它时浏览每个View。用NSOperationQueue呈现ViewController会帮助我实现这个结果。最终,我就是无法让用户看到我逐步完成每个VC。 最佳答案 似乎是Probl