草庐IT

multiple-dispatch

全部标签

iOS:dispatch_get_global_queue QOS_CLASS_BACKGROUND 在 7.1.2 上崩溃

我有以下使用block获取联系人的代码片段:if(&ABAddressBookCreateWithOptions!=NULL){CFErrorReferror=nil;addressBook=ABAddressBookCreateWithOptions(NULL,&error);ABAddressBookRequestAccessWithCompletion(addressBook,^(boolgranted,CFErrorReferror){dispatch_sync(dispatch_get_main_queue(),^{if(error){//...}elseif(!grante

ios - swift : Multiple targets handling: macros not working

来自引用HowtohandlemultipletargetsinXCodeusingswiftlanguage?和https://www.appcoda.com/using-xcode-targets/我创建了三个目标,每个目标都有不同的包ID和应用程序图标。我还在“其他swift标志”->自定义swift标志部分添加了不同的标志喜欢对于我添加的第一个目标"-DGOLD",对于第二个目标,我添加了"-DSILVER"并为我添加的第三个目标"-DPLATINUM"。在AppDelegate中我写了一段代码#ifGOLDprint("Gold")#elseifSILVERprint("Si

ios - dispatch_queue_t 定义为强

我看到了下面一行:@property(nonatomic,strong)dispatch_queue_tfilterMainQueue;为什么将不是对象的dispatch_queue_t实例声明为strong? 最佳答案 这完全是一个好习惯。我要注意自OSXMountainLion和iOS6.0以来,iOS/OSX运行时中的所有GCD和XPC对象都现在被视为Objective-C对象ARC并且它们现在不是原语,因此它们将以与通常的Objective-C对象相同的方式进行内存管理。这就是为什么从现在开始您应该将它们声明为strong。

objective-c - 不能在带有 Objective-C++ 代码的 C++ 类中使用 dispatch_sync

我需要在继承的C++类中使用Objective-C++代码,该类处理来自iPhone摄像头的视频录制(通过其他native-objective-c类Wrapper获取CMSampleBufferRef使用CMSampleBufferDelegate)。我的AVCaptureVideoOutput在它自己的dispatch_queue_tcallbackQueue中工作,所以,当我想从我的Wrapper类中获取最后一帧时,我需要锁定callbackQueue让它等到复制完成。据我所知,这是通过dispatch_sync完成的,同步captureOutput.callbackQueue。但

javascript - ontouchmove : Detecting the new element being touched when moving a touch across multiple elements

据我所知,移动版Safari中由ontouchmove触发的事件仅包含有关触摸开始于哪个元素的信息。例如,假设我将手指放在元素.firstElement上,然后将它拖过页面直到它超过.secondElement。我检查了事件对象的所有属性,但似乎只能找到对.firstElement的引用。有没有办法用ontouchmove检测用户的手指当前正在触摸哪个元素? 最佳答案 这似乎是Howtofindouttheactualevent.targetoftouchmovejavascriptevent?的副本根据该答案,事件对象中没有引用手

iphone - 使用 Grand Central Dispatch,我如何检查是否有 block 已经在运行?

我正在使用GCD从Internet进行一些后台加载。除了一点点缺陷外,这很好用。在我的应用程序中,我有3个选项卡,当单击任何选项卡时,GCD开始为适当的选项卡进行后台加载。如果用户决定从第一个选项卡转到第二个选项卡(当GCD已开始为第一个选项卡下载数据时),然后再次返回到第一个选项卡。GCD将启动另一个后台线程(即使第一个后台线程尚未完成数据下载)。那么有没有办法检查后台线程当前是否正在运行?因此,如果用户选择非常快速地来回切换选项卡(出于某种原因),它不会启动多个后台线程。 最佳答案 如果你想防止两个相同类型的block同时运行,

iphone - 使用 Grand Central Dispatch (GCD) 创建恰好 N 个线程

我知道我可以使用dispatch_async和dispatch_get_global_queue异步执行任务。但是dispatch_async创建了多少线程?我应该怎么做才能使用GCD恰好执行N个(不多不少)线程,并在它们上执行一些任务?任务执行后,我需要在已释放的线程中添加新任务,可能是在前一个任务的complitationblock中。或者也许我可以使用NSOperationQueue控制threds的数量?我知道它有属性maxConcurrentOperationCount,但它只控制任务的最大限制。那么,如果我设置maxConcurrentOperationCount=8并向N

ios - dispatch_after 递归 vs NSTimer scheduledtimerwithtimeinterval

我读了一段代码,它每秒检查数据并更新UI。这听起来像我们通常使用NSTimerscheduledtimerwithtimeinterval所做的事情。但是这段代码是通过递归调用dispatch_after实现的,如下所示:-(void)retriggerMethod{...dostuffhere,assumingyouwanttodoitonfirstinvocation...dispatch_after(...,^{[selfretriggerMethod];});}dispatch_afterrecursion和NSTimerscheduledtimerwithtimeinterv

ios - dispatch_async 中的 dispatch_sync

我只是想确认为什么需要这样做。我将此代码添加到KIImagePager(一个cocoapod)以加载应用本地的图像(默认代码从url加载图像)。根据同事的建议,这是我的工作代码:dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0),^{dispatch_sync(dispatch_get_main_queue(),^{[imageViewsetImage:[UIImageimageNamed:[aImageUrlsobjectAtIndex:i]]];;});});我注意到,如果我取

ios - 调用 imageWithData :UIImageJPEGRepresentation() multiple times only compresses image the first time

为了防止我的应用程序滞后,我尝试压缩大于1MB的图像(主要用于从iphone的普通相机拍摄的照片。UIImage*image=[infoobjectForKey:UIImagePickerControllerOriginalImage];NSData*imageSize=UIImageJPEGRepresentation(image,1);NSLog(@"originalsize%u",[imageSizelength]);UIImage*image2=[UIImageimageWithData:UIImageJPEGRepresentation(image,0)];NSData*ne