草庐IT

grand-central-dispatch

全部标签

objective-c - 为什么我应该为高级应用程序选择 GCD 而不是 NSOperation 和 block ?

Apple的GrandCentralDispatch引用资料说:"...ifyourapplicationneedstooperateattheUnixlevelofthesystem—forexample,ifitneedstomanipulatefiledescriptors,Machports,signals,ortimers.GCDisnotrestrictedtosystem-levelapplications,butbeforeyouuseitforhigher-levelapplications,youshouldconsiderwhethersimilarfunctio

ios - iOS 中的 dispatch_async 和 block

这段代码是什么意思?dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{TMBaseParser*parser=[[TMBaseParseralloc]init];parser.delegate=self;NSString*post=nil;NSData*postData=[postdataUsingEncoding:NSUTF8StringEncoding];[parserparseForServiceType:TMServiceCategoriespostdata:postDat

ios - iOS 中的 dispatch_async 和 block

这段代码是什么意思?dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{TMBaseParser*parser=[[TMBaseParseralloc]init];parser.delegate=self;NSString*post=nil;NSData*postData=[postdataUsingEncoding:NSUTF8StringEncoding];[parserparseForServiceType:TMServiceCategoriespostdata:postDat

ios - 在应用程序委托(delegate)中返回之前等待异步任务完成完成 block

我正在使用UIManagedDocument的子类在我的项目中使用核心数据。重点是让子类返回一个单例实例,这样我的屏幕就可以简单地调用它,并且托管对象上下文对所有这些实例都保持不变。在使用UIManagedDocument之前,如果它的文件路径已经存在,我需要通过打开它来准备它,或者如果它还不存在则创建它。我在子类中创建了一个方便的方法prepareWithCompletionHandler:来促进这两种情况。@implementationSPRManagedDocument//Singletonclassmethodhere.Then...-(void)prepareWithComp

ios - 在应用程序委托(delegate)中返回之前等待异步任务完成完成 block

我正在使用UIManagedDocument的子类在我的项目中使用核心数据。重点是让子类返回一个单例实例,这样我的屏幕就可以简单地调用它,并且托管对象上下文对所有这些实例都保持不变。在使用UIManagedDocument之前,如果它的文件路径已经存在,我需要通过打开它来准备它,或者如果它还不存在则创建它。我在子类中创建了一个方便的方法prepareWithCompletionHandler:来促进这两种情况。@implementationSPRManagedDocument//Singletonclassmethodhere.Then...-(void)prepareWithComp

iphone - 如何停止调度队列中任务的执行?

如果我有一个串行队列,我如何从主线程告诉它立即停止执行并取消它的所有任务? 最佳答案 如果你正在使用SwiftDispatchWorkItem类允许单独取消工程单元。工作项允许您直接配置各个工作单元的属性。它们还允许您处理各个工作单元,以便等待它们完成、获得有关它们完成的通知和/或取消它们。(适用于iOS8.0+macOS10.10+)。DispatchWorkItemencapsulatesworkthatcanbeperformed.AworkitemcanbedispatchedontoaDispatchQueueandwit

iphone - 如何停止调度队列中任务的执行?

如果我有一个串行队列,我如何从主线程告诉它立即停止执行并取消它的所有任务? 最佳答案 如果你正在使用SwiftDispatchWorkItem类允许单独取消工程单元。工作项允许您直接配置各个工作单元的属性。它们还允许您处理各个工作单元,以便等待它们完成、获得有关它们完成的通知和/或取消它们。(适用于iOS8.0+macOS10.10+)。DispatchWorkItemencapsulatesworkthatcanbeperformed.AworkitemcanbedispatchedontoaDispatchQueueandwit

iphone - GCD中的 "global queue"和 "main queue"有什么区别?

在其他一些方法中,有以下两种方法可以在GCD中获取队列:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);dispatch_get_main_queue();如果我没有完全错的话,“主队列”在主线程上执行,对执行UI工作的“回调”block很有用。这是否意味着“全局队列”是在后台线程上运行的队列? 最佳答案 主队列确实像你说的那样在主线程上运行。全局队列是并发队列,来自dispatch_get_global_queue的主页:Unlikethemainqueue

iphone - GCD中的 "global queue"和 "main queue"有什么区别?

在其他一些方法中,有以下两种方法可以在GCD中获取队列:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);dispatch_get_main_queue();如果我没有完全错的话,“主队列”在主线程上执行,对执行UI工作的“回调”block很有用。这是否意味着“全局队列”是在后台线程上运行的队列? 最佳答案 主队列确实像你说的那样在主线程上运行。全局队列是并发队列,来自dispatch_get_global_queue的主页:Unlikethemainqueue

cocoa - 在 Grand Central Dispatch 中使用 dispatch_sync

谁能用非常清楚的用例解释GCD中的dispatch_sync的目的是什么?我不明白在哪里以及为什么我必须使用它。谢谢! 最佳答案 当你想执行一个block并等待结果时使用它。其中一个示例是使用调度队列而不是锁进行同步的模式。例如,假设您有一个共享的NSMutableArraya,访问由调度队列q调解。后台线程可能正在附加到数组(异步),而您的前台线程正在拉出第一项(同步):NSMutableArray*a=[[NSMutableArrayalloc]init];//Allaccessto`a`isviathisdispatchque