ios – 一对二完成块

ios – 一对二完成块,第1张

概述我正在使用一个使用twoBlock方法的 network kit,但我更喜欢在我自己的代码中使用oneBlock.如果twoBlock方法更好,这让我感到困惑.不知怎的,我没有看到它. 有没有办法比其他方法更好? oneBlock方法 1个组合数据和错误的块: -(void)oneBlock { [self startWithCompletionBlock:^(id obj, NSErro 我正在使用一个使用twoBlock方法的 network kit,但我更喜欢在我自己的代码中使用oneBlock.如果twoBlock方法更好,这让我感到困惑.不知怎的,我没有看到它.

有没有办法比其他方法更好?

oneBlock方法

1个组合数据和错误的块:

-(voID)oneBlock {    [self startWithCompletionBlock:^(ID obj,NSError* error) {        if(error) {            NSLog(@"error: %@",error);        } else {            NSLog(@"success: %@",obj);        }    }];}

twoBlock方法

2个专用于处理数据和错误的块:

-(voID)twoBlocks {    [self startWithCompletionBlock:^(ID obj) {        NSLog(@"success: %@",obj);    } errorBlock:^(NSError* error) {        NSLog(@"error: %@",error);    }];}
解决方法 我认为你不能说任何一个更好.只有不同的利弊平衡.

这两种方法的主要优点是可以更好地分离“快乐”路径和错误管理代码. (这种分离听起来类似于使用异常提供的优势之一,但它是一种不同的野兽;实际上,catch块允许在一个地方收集,即在“功能”块之外,所有代码都可以管理在“功能”块中可能出现的一堆可能的错误条件,其管理通常会分散在它上面;在上面的2个块示例中,没有这个,因为管理错误条件的代码仍然是混合的与你的功能的其余代码).

另一方面,很可能在两种情况下,即成功和失败,你想采取一些共同的行动.可以想象,例如,序列化一堆网络 *** 作:当一个 *** 作完成时,执行下一个 *** 作,无论前一个 *** 作是成功还是失败.如果使用2块方法,这显然是一些代码复制的情况.

总的来说,我不认为存在很大差异,因为您可以轻松地完成两种方法所需的 *** 作,但在特定情况下,一种方法可以比另一种方法更适合您的工作流程.

只需2美分.

总结

以上是内存溢出为你收集整理的ios – 一对二完成块全部内容,希望文章能够帮你解决ios – 一对二完成块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1076210.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存