草庐IT

Non-blocking

全部标签

objective-c - 串行调度队列中的 block 未执行 - GCD iOS Objective-C

我有一个for循环将block排队到主队列,如下所示:for(intx=0;x只有第一个block被执行。我已验证该循环工作正常,它循环了正确的次数并且没有引发异常或错误。 最佳答案 使用这段代码:for(intx=0;x“Blah”登出5次。我猜你发布的代码与你在应用程序中的代码不一样?我不得不添加);到dispatch_after调用结束。 关于objective-c-串行调度队列中的block未执行-GCDiOSObjective-C,我们在StackOverflow上找到一个类似

ios - iOS 中的内联 block

我对iOSblock完全陌生。我读过一本关于ios中的内联block的书。内联block到底是什么?我们可以将它用于任何对象吗?普通block和内联block有什么区别?这是我在书上看到的使用内联block而不是回调函数NSArray*arr2=[arrsortedArrayUsingComparator:^(idobj1,idobj2){NSString*s1=obj1;NSString*s2=obj2;NSString*string1end=[s1substringFromIndex:[s1length]-1];NSString*string2end=[s2substringFro

ios - block 可以用作委托(delegate)的替代品吗?

我想编写一个自定义委托(delegate)方法以在我的一个ViewController中接收来自另一个ViewController的事件。我应该在这里使用block而不是委托(delegate)吗?哪个是首选?@protocolMyClassDelegate-(void)doSomethingInDelegate;@end@interfaceMyClass:NSObject@propertyiddelegate;-(void)doSomething@end@implementationMyClass-(void)doSomething{[self.delegatedoSomething

ios - UIView AnimateWithDuration 永远不会到达完成 block

我有这段代码,我用它来通过一个漂亮的小动画切换RootViewController,它已经工作了几个月......但后来随机停止工作。UIViewsnapshot=[self.windowsnapshotViewAfterScreenUpdates:YES];[viewController.viewaddSubview:snapshot];self.window.rootViewController=viewController;NSLog(@"checkpoint1");[UIViewanimateWithDuration:0.3animations:^{NSLog(@"checkp

ios - 将数据分成 block 并上传到服务器

我有一个文件需要上传到服务器,我被告知在上传之前将文件分成多个block。那么问题来了:1)我已将文件转换为“数据”类型(字节)。如何将其拆分为每个1MB的block?2)拆分后,如何使用Alamofire上传?如果不可能使用Alamofire,请推荐我该怎么做。我使用的是swift3和Code8.3。非常感谢任何帮助。 最佳答案 我认为这可行letpath=Bundle.main.url(forResource:"test",withExtension:"png")!do{letdata=tryData(contentsOf:pa

ipad - iOS:不兼容的 block 指针类型

这段代码:[UIViewanimateWithDuration:0.25fanimations:^(){self.view.alpha=1.0f;}];正在生成此编译时错误:Incompatibleblockpointertypesinitializing'void(^)()',expected'void(^)(void)'是什么原因——这以前有效(实际上在其他项目中编译得很好——(我刚刚检查过)。是否有我忽略的编译器/项目设置?基础SDK是4.2,部署目标是4.2 最佳答案 尝试将其声明为[UIViewanimateWithDur

objective-c - 如何更改 block 中的int值?

如何在block中更改int值,我有这个:__blocklonglongsize=-1;ALAssetsLibraryAssetForURLResultBlockresultblock=^(ALAsset*myasset){ALAssetRepresentation*rep=[myassetdefaultRepresentation];size=[repsize];//hereshowednormalvalueNSLog(@"neededsize:%lld",size);};ALAssetsLibrary*assetslibrary=[[[ALAssetsLibraryalloc]in

objective-c - 更改 block 内 NSString 的值

我在block内为NSString设置值时遇到问题。__blockNSString*cityID=[[NSStringalloc]init];AFJSONRequestOperation*operation=[AFJSONRequestOperationJSONRequestOperationWithRequest:requestsuccess:^(NSURLRequest*request,NSHTTPURLResponse*response,idjson){cityID=[NSStringstringWithFormat:@"%@",[[jsonvalueForKeyPath:@"l

ios block 示例。如何创建 block objective-c

我有两个UIViewController:主VCPickerVC在主视图Controller中,我有IBAction方法:-显示选择器View在这种方法中,我需要创建block来呈现PickerVCView并等待我在PickerVCView上选择一些值并按下完成按钮。在此block中,我需要实现回调,在我按下“完成”按钮后调用MainVC中的方法。所以,我以前用过block,但是我不知道自己怎么实现。我想第一部分应该是这样的:-(IBAction)showPickerView{__blockPickerVC*pickerVC=[[PickerVCalloc]init];[pickerV

ios - 不兼容的 block 指针类型 objectsPassingTest :

我想过滤NSSet:NSSet*contents=[self.contentobjectsPassingTest:^(idobj,BOOL*stop){NSNumber*chapterNo=((LTContent*)obj).chapterNo;return[chapterNointegerValue]但此代码会引发错误:不兼容的block指针类型将“int(^)(id,BOOL*)”发送到“BOOL(^)(id,BOOL*)”类型的参数如果我更改代码:NSSet*contents=[self.contentobjectsPassingTest:^(idobj,BOOL*stop){N