草庐IT

Non-blocking

全部标签

iphone - 给定一个异步 block ,如何知道该 block 何时完成?

假设您正在使用来自ALAssetsLibraryAPI的异步block,例如enumerateGroupsWithTypes:ALAssetsGroupAllusingBlock:^(ALAssetsGroup*group,BOOL*stop)。首先,由于block是异步的,这是否意味着系统将自动在单独的执行线程上运行block?如果是这样,了解block何时完成的最佳方法是什么,以便我可以执行一些操作,例如停止UIActivityIndi​​cator旋转或重新加载UITableView。IE喜欢animateWithDurationblock,它有一个完成block,允许您在动画完

objective-c - 对多个位置进行地理编码 - 了解何时调用 "All"完成 block

我正在使用CoreLocation的地理编码器来获取多个map项的CLLocation坐标。地理编码器在每个项目完成时调用一个完成block。我如何创建一个类似的block功能,当所有这些包含异步地理编码器调用的调用已完成时调用?(我可以使用手动计数器。但必须有更优雅的解决方案)到目前为止,这是我的地理编码功能。它循环遍历一系列位置项,并为每个项启动一个新的地理编码过程。-(void)geoCodeAllItems{for(EventItem*thisEventin[[EventItemStoresharedStore]allItems]){if(![thisEventeventLoc

ios - 在具有快速枚举的 for 循环中使用 block 的错误

所以我试图在一个数组中建立一个block队列,然后在稍后阶段执行队列,该队列是在使用block中使用的字符串枚举的forloop中建立的。NSArray*array=@[@"test",@"if",@"this",@"works"];NSMutableArray*queue=[NSMutableArraynew];for(idkeyinarray){//addtheworktothequeuevoid(^request)()=^{NSLog(@"%@",key);};[queueaddObject:request];//request();//thisworksfineifijuste

iOS: block 和ivars

这个问题在这里已经有了答案:ClarificationonApple'sBlockDocs?(2个答案)关闭8年前。在很多问题中,询问是否可以在block中使用self。答案是否定的,以避免保留循环。现在,当我在我的UIViewControllerblock中使用“ivar”时,它应该没问题。但是当我使用:-(void)viewDidLoad{[_customCellsetChangedValueBlock:^{if(_object!=nil){NSLog(@"Thisisasample");}}];}dealloc方法从未被调用:-(void)dealloc{NSLog(@"Deal

ios - 方法内部的 block 不返回

我必须遵循以下方法。如果用户喜欢该页面,我希望此方法返回1,如果用户不喜欢该页面,则返回0。但似乎在该函数之前调用了该block。有没有办法解决这个问题?谢谢!-(NSInteger)userWithId:(NSString*)fb_idlikesPageWithID:(NSString*)page_id{__blockNSIntegerreturnValue;NSString*fbGraphPath=[NSStringstringWithFormat:@"/%@/likes/%@",fb_id,page_id];NSLog(@"%@",fbGraphPath);[FBRequestC

ios - 使用 AutoLayout 的 *Only One* 动画 block (UILabel) 问题

我正在使用AutoLayout并为各种约束变化设置动画,没有任何问题。但是,VC中有一个UILabel根本不会动画。我想要的动画是类似删除的效果。我已经设置了一个计时器,根据rdelmar的建议,因为UILabel不支持动画约束,并且我得到了我想要的标签只有一行长的效果。但是,多行标签不会产生类似删除的效果,而是随着标签宽度的增加,字符会换行。下面是我如何设置标签的约束。-(void)initializeLabelWithMessage:(NSDictionary*)message{meaningLabel.text=[messagingSubMethodsmeaningStringF

iOS 后台获取和完成 block

我正在尝试定义这个方法-(void)backgroundFetchWithCompletion:(void(^)(UIBackgroundFetchResult))completionHandler;但是我在UIBackgroundFetchResult上收到一个错误,说只允许没有类型的参数列表,我正在学习本教程和这个tutorial这就是他们定义方法的方式。 最佳答案 最后执行一些操作后,您必须调用列表中的一个。objective-CcompletionHandler(UIBackgroundFetchResultNewData)

ios - 返回 block 的方法

我写了一个可以与点符号一起使用的方法,使用block技巧-(RaginiDBQuery*(^)(idobject))where;可以使用点符号调用此方法,因为基本上它不接收任何参数,(它接收,但使用返回的block)所以我可以这样调用它:query.where(对象)我需要它而不是获取一个id对象我想在这个方法中接收类似的东西:-(NSEnumerator*)where:(BOOL(^)(idobject))predicate;这个方法可以这样调用:[objectwhere:^(ida){return[aintValue]%2==1}];我想要的是将两者结合起来,使用点符号调用我的方法

objective-c - 使用 block 导致 EXC_BAD_ACCESS

我想使用block,但在几次调用后它导致我出现EXC_BAD_ACCESS。我的代码:-(void)sendBasket{if(currentSendToBasketBlock!=nil){//there'salreadyawebservicegoing...setthenewoneaswaitingwaitingSendToBasketBlock=^{WebServicesModel*webServicesModel=[[[WebServicesModelalloc]init]autorelease];webServicesModel.delegate=self;[webServic

ios - Objective-C block 和数据执行

当我阅读苹果iOS开发人员指南时,它向我解释了一些有关使用Blocks(与GCD一起使用)的信息。它应该将一些“代码片段”传递给objective-c对象,并将其传递给另一个线程,以便它可以在那里执行。不会使用它极易受到病毒等的攻击吗?(数据执行)。还是我在这里漏掉了一些要点? 最佳答案 不-您可以将此“代码片段”视为在您的函数(方法...)中声明的编译的、私有(private)的、隐藏的函数。IOW,它和二进制文件中的任何编译函数一样危险。 关于ios-Objective-Cblock