草庐IT

collisions_block

全部标签

ios - "Missing __block type specifier"重构代码后编译错误但重构前正常

我有一些代码可以下载图像并将其分配到一个block中。该代码当前有效,但是我想将其重构为单独的方法,但是在重构后出现编译错误。这是在成功分配下载的图像的情况下编译和运行的原始代码:-(void)someMethod{…MyObject*object=[[MyObjectalloc]init];[self.objectsaddObject:object];NSString*graphRequest=[NSStringstringWithFormat:@"%@%@%@",@"https://graph.facebook.com/",fbid,@"/picture?type=square"]

ios - 在调用另一个引用 self 的方法的 block 内调用一个方法会导致保留周期吗?

doFirst能否在此处导致保留循环?@interfaceExample:NSObject@property(nonatomic,strong)void(^block)();@end@implementationExample-(void)doFirst{__weakidweakSelf=self;self.block=^{[weakSelfdoSecond];};self.block();}-(void)doSecond{self.value=//...//dootherstuffinvolvingself}@end 最佳答案 与

ios - 从 block 更新 uilabel

从相册中导入多张照片,委托(delegate)方法之一是//HereinfoisarrayofdictionarycontainingFileName/AssetURLetc-(void)somePicker(SomePicker*)somePickerdidFinishPickingMediaWithInfo:(NSArray*)info{_importStatusView.center=self.view.center;[self.viewaddSubview:_importStatusView];[selfdismissViewControllerAnimated:YEScomp

ios - 在 objective-c 中使用异步代码避免嵌套 block

我的Objective-C代码中需要发生一系列事件。假设我有6个东西——thingA、thingB、thingC、thingD、thingE和thingF。thingB和thingD返回一个BOOL。如果thingB为NO,则不需要调用thingC。如果thingD为NO,则不需要调用thingE。-(void)doThings:(void(^)())completion{[selfthingA:^{[selfthingB:^(BOOLsuccess){if(success){[selfthingC:^{[selfthingD:^(BOOLsuccess){if(thingD){[se

ios - NSBlockOperation、NSOperationQueue 和 block

我必须从我的RestAPI同步一堆信息。我必须进行6次RestAPI调用才能完成工作。我用Blocks设计了​​API调用,如果有则返回NSError。其中3个调用应该嵌套执行,因为第一个调用向其他调用提供信息并允许执行,而其他3个调用可以独立运行。为了提高网络性能,我将我的同步调用设计如下:1个包含前3个嵌套block的NSBlockOperation;1个包含其他三个block的NSBlockOperation;1个NSBlockOperation,我用作“信号量”并在所有工作完成时告诉我。最后一个NSBlockOperation依赖于前两个NSBlockOperation。我还有

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 - NSMutableArray 内部的 block 泄漏 (ARC)

我有一些block内的操作。这个操作,只更新一个UIImage像这样:^(UIImage*image){self.myImage=image;}];我的图像是通过使用NSURLConnection访问互联网计算的。当我从Internet收到图像时,我调用NSMutableArray中的那个block。到目前为止,一切都很好。我的问题是,当我有多个具有相同URL的图像时,我没有进行多次调用,而是向处理连接的类内的NSMutableArray添加了一个新block。这样一来,我就可以进行一次调用,并更新共享URL的多张图像。一切正常,问题是我在漏block。我将这样的block添加到NSM

objective-c - 当 block 的参数数量和类型可能不同时,使用来自 va_list 的参数调用 block

我有一个带有接受一些参数的block的变量。参数的确切数量及其类型可能会有所不同。例如它可以是一个blockvoid(^testBlock1)(int)=^(inti){}或blockvoid(^testBlock2)(NSString*,BOOL,int,float)=^(NSString*str,BOOLb,inti,floatf){}参数类型仅限于{id,BOOL,char,int,unsignedint,float}。我知道参数的当前数量及其类型。我需要实现一个可以使用给定参数执行block的方法:-(void)runBlock:(id)blockwithArguments:(

ios - 我应该在 block 内使用哪个 NSAssertion?

我们不能在block内使用NSAssertion,因为该宏使用self,创建一个保留循环,如此处评论:http://www.takingnotes.co/blog/2011/09/27/making-nsassert-play-nice-with-blocks/我的问题是,我应该在block内使用哪种断言? 最佳答案 在这些情况下,我通常使用NSCAssert()。它不传递self,也可用于C函数内部的断言。 关于ios-我应该在block内使用哪个NSAssertion?,我们在Sta

ios - block 中的弱引用与 NSTimer 之间的区别

正如我们所知,我们需要在block内使用弱引用来打破保留循环,如下所示:__weakidweakSelf=self;[selfdoSomethingWithABlock:^(){[weakSelfdoAnotherThing];}]然而,弱引用无法打破由NSTimer引起的保留周期。__weakidweakSelf=self;timer=[NSTimerscheduledTimerWithTimeInterval:30.0ftarget:weakSelfselector:@selector(tick)userInfo:nilrepeats:YES];//Noluck有什么区别?计时器怎