草庐IT

block-badge

全部标签

ios - 当 block 中的 weakSelf 为 nil 时,什么时候应该添加 strongSelf

通过在block中使用weakSelf,你可以避免retaincycle。但有时你应该保持weakSelf直到blockretain,因此你需要像strongSelf一样使用__weak__typeof__(self)weakSelf=self;dispatch_group_async(_operationsGroup,_operationsQueue,^{__typeof__(self)strongSelf=weakSelf;[strongSelfdoSomething];[strongSelfdoSomethingElse];});我想知道weakSelf何时为nil,然后我们应该

ios - 如何在 GCD block 中返回当前方法?

这是我的代码:-(void)viewDidLoad{[superviewDidLoad];[selftestGCD];}-(void)testGCD{staticdispatch_once_tonceToken;dispatch_once(&onceToken,^{NSLog(@"1");return;});NSLog(@"2");}控制台打印出1和2。我想要的只是第一次打印1。我认为return可能不是从方法返回,而是从block返回。有什么方法可以从这个GCDblock中的当前方法返回吗? 最佳答案 使用block来解决问题。-

ios - 我应该如何在 backgroundConfiguration 中使用 NSURLSession 将多个文件的 block 上传到 Amazon S3 ( iOS7 )

目前我正在开展一个项目,我们需要将一组照片和视频发送到S3亚马逊服务器。流程是这样的:-首先我们要求api开始传输,然后我们得到一个id(api调用)-传输id->在api请求文件上传->file_id作为响应(api调用)-fileid->在api请求block上传->亚马逊数据作为响应(api调用)-uploadchunck->在NSURLSession中配置backgroundConfiguration(每次上传5mb)-在最后一次chunck-upload(api调用)后完成文件上传-在上次文件上传后完成传输(api调用)我们需要使用api并对其进行调用......当应用程序在

ios - 如何获取 NSOperationQueue 的完成 block

这个问题在这里已经有了答案:GetnotificationwhenNSOperationQueuefinishesalltasks(16个答案)关闭8年前。如何获取NSOperationQueue的完成block,这里我想在所有操作中从开始到结束旋转事件指示器。NSOperationQueue*operationQueue=[[NSOperationQueuealloc]init];//Setthemaxnumberofconcurrentoperations(threads)[operationQueuesetMaxConcurrentOperationCount:3];[opera

objective-c - 用于 performSelector : onThread:? 的 Obj-C block

虽然为此启动我自己的方法并不难,但效率不如-(void)performSelector:(SEL)aSelectoronThread:(NSThread*)thrwithObject:(id)argwaitUntilDone:(BOOL)wait;是否有内置方法可以使用block执行此操作?如果不是,有没有一种方法可以避免创建对象、将block放在上面并将其传递给选择器方法?我也想知道在block内访问数据会不会有问题... 最佳答案 与performSelector:方法等效的block是CFRunLoopPerformBlock

objective-c - 单击离开后如何从特定标签栏中删除角标(Badge)?

我只想在用户点击带有角标(Badge)的标签栏后才从标签栏中删除角标(Badge)例如,角标(Badge)显示在“新闻”选项卡上,如下所示。如果我单击“新闻”选项卡,角标(Badge)仍会显示。只有在我点击任何其他标签(新闻除外)后,角标(Badge)才会消失。我如何在应用委托(delegate)中实现它?编辑我尝试通过以下代码设置UITabbardelegate:tabController.tabBar.delegate=self;但我不断收到以下错误不允许更改由标签栏Controller管理的标签栏的委托(delegate)。'我该如何解决? 最佳答案

ios - 具有 block 和停止参数的递归方法

我在UIView上编写了一个类别,它允许我遍历View层次结构:UIView+Capture.htypedefvoid(^MSViewInspectionBlock)(UIView*view,BOOL*stop);@interfaceUIView(Capture)-(void)inspectViewHeirarchy:(MSViewInspectionBlock)block;@endUIView+Capture.m@implementationUIView(Capture)-(void)inspectViewHeirarchy:(MSViewInspectionBlock)block{

ios - IOS 会增加推送通知角标(Badge)编号吗?

我需要编写一个可以在图标上显示角标(Badge)编号的应用程序。我能够收到推送通知,角标(Badge)编号也显示为5。但是,当应用程序尚未启动时收到第二个推送通知时,角标(Badge)仍显示5。不应该是10吗? 最佳答案 iOS不会对您发送到应用程序的角标(Badge)编号求和。它只显示从您的服务器发送的最新角标(Badge)编号。如果这是您要显示的角标(Badge)编号,您的服务器应该发送角标(Badge)编号为10的推送通知。 关于ios-IOS会增加推送通知角标(Badge)编号吗

ios - 动画 block - 完成立即触发

为什么以下代码在触发后立即记录“完成”?[UIViewanimateWithDuration:0.3animations:^{NSLog(@"Start");}completion:^(BOOLfinished){NSLog(@"done");}]; 最佳答案 因为你实际上并没有对任何东西进行动画处理(NSLog不能进行动画处理)。您需要为一个对象设置动画,否则将立即调用完成block。如果没有任何动画,则0.3秒的持续时间将被忽略。 关于ios-动画block-完成立即触发,我们在St

ios - 在理解 typedef 和 block 方面需要帮助

typedefvoid(^RequestProductsCompletionHandler)(BOOLsuccess,NSArray*products);我很难理解这行代码在.h文件中的作用。请详细说明类型定义。void(我知道void的作用,但这里的目的是什么?)。(^RequestProductsCompletionHandler)(BOOL成功,NSArray*产品);怎么调用它? 最佳答案 这是objective-c的定义block名称为RequestProductsCompletionHandler的类型采用2个参数(BO