有没有办法比其他方法更好?
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 – 一对二完成块所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)