草庐IT

nsoperation

全部标签

ios - 从 NSOperation 返回数据?

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

iOS - NSOperation 中的异步 NSURLConnection

我知道这个问题在SO上被问过很多次,但我没有设法让它在我的项目中工作......所以,我想子类化NSOperation并让它使用NSURLConnection下载文件。正确的做法是什么?这是我的代码不起作用:首先,我将所有操作添加到一个循环中:DownloadFileOperation*operation;NSOperationQueue*queue=[[NSOperationQueuealloc]init];for(inti=0;i这是我的子类:@interfaceDownloadHandbookOperation:NSOperation{}@property(strong,nona

ios - 核心数据/NSOperation : crash while enumerating through and deleting objects

我有一个基于核心数据的应用程序,它具有一个对象(列表)到多个对象(列表项)的关系。我正在努力在设备之间同步数据,作为其中的一部分,我在后台线程中从XML文件导入列表(通过NSOperation子类)。当我更新现有列表时,我删除了它所有的旧列表项(从特定于该线程的NSManagedObjectContext中)并用XML文件中的新列表项替换它们...删除是通过枚举处理的该列表的项目:for(ListItemCD*iteminlistToUpdate.listItems){[self.importContextdeleteObject:item];}但是,偶尔,我会在枚举期间崩溃:*由于未

ios - NSOperation 在队列结束时释放

我有很多UIImage批处理操作。我将它们添加到NSOperationQueue的实例中:self.operationQueue.addOperations(operations,waitUntilFinished:false)但是似乎operationQueue会捕获所有操作并在所有操作完成后释放它们。我的操作实例继承自这个class如何释放刚刚完成的操作?我错过了什么吗? 最佳答案 addOperations(operations,waitUntilFinish:false)不会隐式保留所有操作直到完成,它本质上与foroper

ios - 在主线程上同步启动 NSOperation 时出现奇怪的间歇性崩溃

我这里有一个系统,它以缝合在一起的位呈现自己。有时这些位在后台线程中呈现,但有时当反馈延迟非常重要时,这些位在主线程上同步呈现。这段代码在主线程中调用,方法名为createPatchView,patchView.createRenderingOperation()返回NSOperation的子类做渲染。异步版本工作正常,操作队列选择作业并在后台处理它。但是我们要立即渲染它的另一个分支给我间歇性崩溃。//Figureoutwhentorenderitifasync{//Addthepatchrenderingjobtothetilerenderingqueue.tiledView.ren

ios - 当 NSOperationQueue 中的所有其他操作完成时执行 NSOperation,无论它们是否成功完成

嗨,我这里有一个奇怪的情况:概览:我正在开发一个用户可以启动多个操作的应用程序,所有这些操作都将在后台线程上运行,因此不会阻塞UI。这些操作中有些是相互依赖的,有些则不是。因此,为了确保操作仅在所有必要的依赖操作完成执行后才执行,我使用操作的依赖属性。我正在使用异步操作。这是我的实现:importUIKitimportCoreDataimportSwiftyJSONclassVMBaseOperation:NSOperation{varfinishedStatus:Bool=falsevarexecutionStatus:Bool=falsevarretryCount:Int=0pri

swift - 为什么我的 NSOperation 没有取消?

我有这段代码可以将NSOperation实例添加到队列中letoperation=NSBlockOperation()operation.addExecutionBlock({self.asyncMethod(){(result,error)inifoperation.cancelled{return}//etc}})operationQueue.addOperation(operation)当用户离开触发上述代码的View时,我取消正在执行的操作operationQueue.cancelAllOperations()测试取消时,我100%确定取消在异步方法返回之前执行,因此我希望op

ios - 如何等到所有 NSOperations 完成?

我有以下代码:functestFunc(completion:(Bool)->Void){letqueue=NSOperationQueue()queue.maxConcurrentOperationCount=1foriin1...3{queue.addOperationWithBlock{Alamofire.request(.GET,"https://httpbin.org/get").responseJSON{responseinswitch(response.result){case.Failure:print("error")break;case.Success:print(

ios - Swift 中的内存管理 : memory don't released after NSOperation ends

有人可以澄清一件事关于Swift的内存管理吗?我有以下应用委托(delegate):@NSApplicationMainclassAppDelegate:NSObject,NSApplicationDelegate{privatelet_queue=NSOperationQueue()funcapplicationDidFinishLaunching(aNotification:NSNotification){_queue.maxConcurrentOperationCount=1_queue.addOperation(Operation())_queue.addOperation(O

ios - 使用 NSOperations 和 Coredata 在 iOS 应用程序中测试 API 请求层的建议

我开发了一个使用RESTAPI的iOS应用。iOS应用程序在工作线程中请求数据,并将解析结果存储在核心数据中。所有View都使用核心数据来可视化信息。RESTAPI变化很快,我无法真正控制界面。我正在寻找如何尽可能轻松地对应用程序执行集成测试的建议。我应该针对API还是针对Mock数据进行测试?但是,如果您可以使用POST创建资源或使用PUT修改它们,如何正确模拟GET请求?您使用什么框架来解决这类问题?我玩过Frank,这看起来不错,但由于iOS应用程序中UI的快速变化而变得复杂。您将如何测试应用程序中的“API请求层”?工作线程是队列中的NSOperations-一切都是异步构建的