草庐IT

dispatch_cancel

全部标签

objective-c - dispatch_async 自定义队列永远不会退出 block

dispatch_queue_tcallerQueue=dispatch_get_current_queue();dispatch_retain(callerQueue);dispatch_queue_tdownloadQueue=dispatch_queue_create("DownloadQueue",NULL);dispatch_async(downloadQueue,^{//somecodethataccessesawebservicedispatch_async(callerQueue,^{//somecodethataccessesUI});});dispatch_rele

ios - 在嵌套 block 中调用 dispatch_group_notify 的次数与调用 dispatch_group_leave 的次数一样多

我有下面这个逻辑;它们基本上是3个嵌套的调度组block。第一组(组)将执行3个简短的异步任务(仅从网络服务下载数据)和一个较长的异步任务:将未同步的记录上传到网络服务,在本地删除同步的记录最后从网络服务下载记录(首先是一个包含ID和基本信息的数组,然后是这些记录中的每一个)。第二组(saveGroup)是较长任务的一部分。它将等到对网络服务的所有未同步记录请求完成。第三个(downloadGroup)将等到对服务的所有这些单个记录下载请求完成。一切顺利,直到第三个调度组。如您所见,我获取了服务器上记录的ID和基本信息,遍历数组并使用downloadGroup调用dispatch_gr

iphone - dispatch_group_wait 与 GCD

因此,我将一组图像发布到我的服务器。我想使用GCD异步发布数组,但我也想使发生这种情况的方法同步,以便我可以传回单个响应对象。然而,方法dispatch_group_wait似乎立即返回(而不是等待我的block完成)。这是一个问题,因为我在一个block中使用一个block吗?NSArray*keys=[imagesallKeys];__blockNSMutableDictionary*responses=[NSMutableDictionarydictionaryWithCapacity:[imagescount]];dispatch_group_tgroup=dispatch_g

objective-c - MFMailComposeViewController : cancel doesn't exit to my app?

我正在尝试使用MFMailComposeViewController发送邮件。当我点击我的应用程序上的按钮时会发生这种情况。当然,当我单击邮件Controller的取消按钮时,我想返回到我的应用程序View,但它不起作用。该怎么办?这是我的代码:MFMailComposeViewController*controller=[[MFMailComposeViewControlleralloc]init];controller.mailComposeDelegate=self;[controllersetSubject:@"Subject"];[controllersetMessageBo

ios - GCD中的dispatch_barrier_async和串行队列,它们有什么区别?

我发现dispatch_barrier_async的工作机制是,只有在之前加入队列的所有block都完成后才会执行。它的工作方式类似于串行队列。因此,我不去区分这两种运行模式在GCD中的区别。 最佳答案 dispatch_barrier_[a]sync旨在与并发队列一起使用。它们还应与对dispatch_[a]sync的调用一起使用。常见的用法是“多读者,一个作者”模式。您设置了一个并发队列。对于“阅读器”block,您使用dispatch_[a]sync。对于“编写器”block,您使用dispatch_barrier_[a]sy

ios - dispatch_sync(dispatch_get_global_queue(xxx), task) 是同步还是异步

苹果的文档说,dispatch_get_global_queue()是并发队列,dispatch_sync是串行的意思,那么任务是异步处理还是同步处理? 最佳答案 您对什么是队列以及异步与同步的含义感到困惑。队列是可以在其上运行block的实体。这些可以是串行的或并发的。串行意味着如果你按照A、B、C、D的顺序放置block,那么它们将被执行A,然后是B,然后是C,然后是D。并发意味着这些相同的block可能以不同的顺序执行,并且可能甚至不止一个同时运行(显然,假设您有多个要运行的内核)。然后是异步与同步。async的意思是当你调用

ios - dispatch_async 和 [NSURLConnection sendSynchronousRequest]

围绕这个话题有各种各样的问题,很多建议说不要在dispatch_async中使用sendSynchronousRequest,因为它会阻塞线程,并且GCD会产生很多新的工作线程来服务所有同步URL请求。关于iOS5[NSURLConnectionsendAsynchronousRequest:queue:completionHandler:]在幕后做了什么,似乎没有人给出明确的答案。我读过的一篇文章指出它“可能”进行优化,并且“可能”使用运行循环——但肯定不会为每个请求创建一个新线程。当我在使用sendAsynchronousRequest:queue:completionHandle

objective-c - 奇怪的崩溃问题为 :- Dispatch queue: com. apple.root.default-overcommit-priority

我正在开发一个应用程序,其中在ASINetworkQueue中添加了很多操作。这些操作基本上用于从服务器获取图像,然后成功完成后在表格View单元格中设置图像。一切都很好。我有一个按钮,一个TableView单元格,在该按钮上打开另一个ViewController。在另一个View上有一个十字按钮,我可以在该按钮上弹出该ViewController。现在,当点击十字按钮时,应用程序有时会在那里崩溃,有时当返回到上一个View并滚动我的表格View时会崩溃。当我看到崩溃日志时,我发现以下代码出现在任何崩溃的线程中。有时它是崩溃的线程2,有时它是崩溃的线程12,有时它是崩溃的线程6但该线程

ios - dispatch_get_current_queue() 已弃用,是否有安全 CoreData 的替代方案?

许多人问过一个标题相似但目的却截然不同的问题:CoreData要求您跟踪当前队列、当前线程和当前NSOperationQueue(如果您是NSOperation),如果您允许方法调用来自其他类(这,默认情况下,每个类都允许)。没有关于此的“可能”:这是一个硬性要求。这很好,而且通常很容易确保:NSAssert([NSThreadcurrentThread].isMainThread||myPrivateQueue==dispatch_get_current_queue(),@"Youtriedtocallthismethodfromanexternalthread,oraqueueot

ios - UISearchBar : How to prevent Cancel Button from clearing text?

我的应用程序中有一个带有UISearchBar的屏幕。当用户进入屏幕时,搜索栏中可能已经有文本。如果用户点击该字段然后点击取消,搜索栏的内容不应被清除。这可以实现吗?我尝试实现searchBarCancelButtonClicked,但我对文本属性的修改被忽略了,文本字段仍然被清除。 最佳答案 我遇到了同样的问题,并通过手动跟踪取消按钮是否被按下的状态解决了这个问题。如果是,请在searchBar结束编辑时重置文本,因为修改searchBarCancelButtonClicked中的searchBar.text不起作用:这是我在UI