草庐IT

NsoperationQueue

全部标签

ios - NsoperationQueue 取消所有操作直到完成操作才取消

在我看来,我有ImageView,ImageView的数据来自Url,图像大约为1-3MB。如果用户滑动,那么我想加载下一张图片,如果滑动缓慢,一切正常,但是当我快速滑动时,我想取消之前的操作并从新的url开始。例如。如果用户滑动4次,如果第二张和第三张图片的操作在中间,我想取消这些操作并开始下载第四张图片但现在在第4张图片的位置,我先看到第2张图片,然后是第3张图片,然后出现第4张图片。这是我的示例代码-(void)handleSwipeLeft:(UISwipeGestureRecognizer*)aSwipeGestureRecognizer{[BackgroundOperati

ios - 无法使用类型的参数列表调用 'startAccelerometerUpdatesToQueue'

我正在尝试在运行以下代码时实例化CMMotionManager:motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue(),withHandler:{(accelerometerData:CMAccelerometerData!,error:NSError!)in//3letacceleration=accelerometerData.acceleration//4self.xAcceleration=(CGFloat(acceleration.x)*0.75)+(self.xAccele

ios - 同步取数据 NSOperationQueue 或 NSURLSession

在我的应用中,当我们点击登录按钮时,我们必须进行3次服务器调用。1)willmakeaservercalltogetanOAuthtokenforusercredentials2)withthetokenfrom(1)wewillgetuserprivileges3)withthetokenfrom(1)andwiththevalidprivilegefrom(2)wewillgetthedatatobedisplayedonthepageafterlogininatableview.我对为此采取的方法感到困惑。使用operationqueue添加依赖项或使用NSURLSession任

swift - iOS : A specific function can be called from multiple threads/places, 但我希望每次调用都在队列中执行

我有一个函数readData从HealthKit读取数据,需要几秒钟才能执行。可以从多个线程/位置调用此函数,但我希望每次调用都在一个队列中执行,一次一个,而不是并行执行。有没有一种简单的方法可以使用GCD或OperationQueues在SwiftforiOS中实现这一点? 最佳答案 是的,串行DispatchQueue应该可以解决您的问题。确保您在需要访问它的每个函数都可以访问它的范围内创建它。letserialQueue=DispatchQueue(label:"serialQueue")serialQueue.async{/

multithreading - 在后台线程上的 NSBlockOperation 之后立即在主线程上运行一个 block

在我的项目中,我使用NSBlockOperation在后台线程上运行一个操作:varoperationQueue=NSOperationQueue()variop=NSBlockOperation(block:{self.reloadSize()/*calculation...*/})operationQueue.addOperation(iop)在后台线程中的计算完成后,我需要立即在NSTableView上调用:table.reloadData()。我会在同一个线程中执行此操作,但是,由于自动布局问题,必须在主线程中重新加载表格。我怎样才能跨两个线程实现这种异步关系?

swift - OperationsQueue 完成所有操作后如何重新加载 UITableView

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭4年前。Improvethisquestion我正在尝试通过调用.reloadData()更新UITableView中的单元格,但它会在进程完成之前重新加载数据,因此自数组以来并没有真正更新任何内容它从中获取数据仍然是空的。我构建代码的方式是,它进行了一堆API调用,每个调用都是SwiftOpera

ios - 如何使用 Swift 取消队列中的下载

我有一个应用程序,用户可以按顺序下载多个文件。我关注了Mr.Rob'ssolution用于顺序下载。但是,当我尝试取消下载时遇到问题。当我尝试取消下载时有两种情况。我想取消当前下载的文件。当我取消那个文件时,下载可以继续到队列中的下一个文件我想取消当前在队列中的文件。队列具有cancelAll()方法,该方法将取消队列中的所有文件。这是代码下载管理器.swiftclassDownloadManager:NSObject,NSURLSessionTaskDelegate,NSURLSessionDownloadDelegate{///Dictionaryofoperations,keye

ios - 无法取消 OperationQueue swift 中的执行操作

我正在做一些冗长的计算以在后台线程上创建图表数据我本来是用GCD的,但是每次用户通过点击按钮过滤图表数据时,图表数据都需要重新计算,如果用户点击图表数据过滤按钮非常快(高级用户)然后图表循环在每个GCD分派(dispatch)异步完成时通过每个绘图我意识到我不能用GCD取消线程,所以我开始尝试实现一个OperationQueue我在向队列添加新操作之前调用了cancelAllOperations()队列上的操作很奇怪,有时它们看起来像是被取消了,有时似乎完成的操作不是最近放入队列的操作。我在取消正在执行的操作时也遇到了麻烦,因为当我在操作完成block中检查它时,该操作的.isCanc

ios - NSOperation 没有在后台线程中发生

我创建了一个NSOperation子类来处理一些zip存档操作。无论如何,如果我重写-start或-main这段代码总是会发生:if([NSThreadisMainThread]){NSLog(@"Iaminthemainthread");return;}知道发生了什么吗?我试过添加这个block:-(void)start{//alsotriedoverridingmainif([NSThreadisMainThread]){NSLog(@"Inmainthread,tryingagain");dispatch_async(dispatch_get_global_queue(DISPA

ios - NSOperation 没有在后台线程中发生

我创建了一个NSOperation子类来处理一些zip存档操作。无论如何,如果我重写-start或-main这段代码总是会发生:if([NSThreadisMainThread]){NSLog(@"Iaminthemainthread");return;}知道发生了什么吗?我试过添加这个block:-(void)start{//alsotriedoverridingmainif([NSThreadisMainThread]){NSLog(@"Inmainthread,tryingagain");dispatch_async(dispatch_get_global_queue(DISPA