草庐IT

dispatch_block_t

全部标签

iphone - 我如何终止/暂停/关闭 GCD 中的异步 block ?

我已经实现了一个使用GCD异步分派(dispatch)的block,如下所示:__blockBOOLretValue;dispatch_async(dispatch_get_global_queue(0,0),^{retValue=[selfGCDHandler:actionNameWithServiceType:serviceType:arguments];});returnretValue;如果它运行的时间比我想要的要长,我该如何取消这样的block?有没有办法取消GCD分派(dispatch)的block,或者为它们提供超时? 最佳答案

ios - 从 Objective-C Block 访问分配委托(delegate)属性? (iOS)

可以从block访问委托(delegate)属性吗?@interfaceTheObject:NSObject...@property(nonatomic,assign)iddelegate;@synthesizedelegate-(void)someMethod{[someObjectdoSomethingWithCompletionHandler:^(NSArray*)someArray{[self.delegateotherMethod:someArray];}];}如果在调用完成处理程序之前委托(delegate)被取消(从也设置了委托(delegate)的对象中的dealloc

ios - block 的执行总是延迟

我是IOS的新手。我想在viewDidLoad中获取设备上的所有图片。但该block总是在我调用NSLog(@"%d",photos.count)后执行,如下所示。遇到这种情况怎么办?__blockNSMutableArray*photos=[[[NSMutableArrayalloc]init]retain];ALAssetsLibrary*library=[[ALAssetsLibraryalloc]init];void(^assertsEnumerator)(ALAsset*,NSUInteger,BOOL*)=^(ALAsset*result,NSUIntegerindex,B

objective-c - 将 __block 与 self 一起使用

我知道有几种方法可以做到这一点。但我想检查我这样做的方式是否会导致泄漏。我的项目中有一个block(使用ARC),为了防止保留周期,我做了以下操作id__blockblockSelf=self;然后在block内将self替换为blockSelf。这是一个好的编码习惯吗干杯 最佳答案 您的代码仍将在block内保留一个self对象-我执行以下操作:__weakSomeObject*weakSelf=self;参见thisanswer也是。希望这对您有所帮助! 关于objective-c-

iphone - 使用返回并接受参数的 block

所以在AFNetworking中有一个函数如下:+(AFImageRequestOperation*)imageRequestOperationWithRequest:(NSURLRequest*)urlRequestimageProcessingBlock:(UIImage*(^)(UIImage*))imageProcessingBlockcacheName:(NSString*)cacheNameOrNilsuccess:(void(^)(NSURLRequest*request,NSHTTPURLResponse*response,UIImage*image))successf

ios - libdispatch.dylib 中的_dispatch_main_queue_callback_4CF$VARIANT$mp 和_dispatch_main_queue_callback_4CF$VARIANT$up 有什么区别?

查看多个iOS崩溃日志,我发现堆栈跟踪几乎相同,唯一的异常(exception)是来自libdispatch.dylib的上述行。我很好奇这种差异是否有意义(因此,这些崩溃应该分成不同的桶)或者它是否微不足道。谢谢。 最佳答案 对于所有实际用途而言,它都是相同的功能,您可以将它们视为相同的崩溃聚合,区别纯粹是内部实现细节。 关于ios-libdispatch.dylib中的_dispatch_main_queue_callback_4CF$VARIANT$mp和_dispatch_mai

iPhone iOS 使用 UIView animateWithDuration block 执行操作的正确方法是什么?

我在想什么是响应用户事件执行“长”操作的正确方法。例如,我有这张幻灯片来取消block,该block在0.5秒内自动离开屏幕。[selfcoreDataAction]本身可能需要大约0.3秒。我想确保操作在用户看到动画结束时完成(我不希望用户意外导航到不同的Controller或关闭应用程序以为操作已完成)。在这种情况下,我应该将[selfcoreDataAction];放在哪里?在block之上、block内还是完成block中?//shouldIputithere?CGPointslideToCancelCenter=slideToCancel.view.center;[UIVie

ios - CATiledLayer:如何仅重新加载一些图 block ?

我在ScrollView中使用平铺层来显示自定义View。自定义View的内容会定期更改,并且我知道发生这些更改的矩形。但是我发现,如果我执行setNeedsRedisplay,则只会重绘一个图block。我怎样才能告诉CATiledLayer只重绘受影响的图block? 最佳答案 如果您在CATiledLayer上调用setNeedsDisplay,则它会重绘其所有图block。如果您改用setNeedsDisplayInRect,它应该只重绘那些与您指定的矩形相交的图block。但请注意,它会重绘整个图block,而不仅仅是与矩

ios - AFNetworking 完成 block

在我当前的设计中,我有一个代表文件夹结构的TableView。当用户点击单元格时,将创建一个AFHTTPRequestOperation来下载文件。文件已下载,而单元格当前显示当前下载状态:无/已下载/正在下载。下载状态设置在与每个单元格对应的NSManagedObject上。在我的下载完成block中,我将下载状态设置为“已下载”标志。这样做的问题是,如果用户从当前的TableView数据导航到另一个,竞争block将设置错误的NSManagedObject-它根据NSIndex。简而言之,我想知道如何将一个对象与我的AFHTTPRequestOperation一起传递,以便在完成时

ios - dispatch_queue 未执行

我正在接受stanfordcs193passignment5。问题是当我将数据搜索到目标ViewController并使用调度队列在viewDidLoad方法中获取数据时。dispatch_async不会在目标ViewController中执行。这里是我的ViewControllerA和目标ViewController的代码。查看ControllerA代码-(void)viewDidLoad{[superviewDidLoad];if(!self.places){self.spinner.hidesWhenStopped=YES;self.spinner.center=self.tab