gpt4 book ai didi

ios - 将多个 block 参数传递给方法

转载 作者:行者123 更新时间:2023-12-02 07:37:58 25 4
gpt4 key购买 nike

In the Apple Docs, it says:

It’s best practice to use only one block argument to a method.

可以传递多个 block 参数吗?或者应该避免这种情况?

具体来说,这是我正在使用的几个选项(我希望使用第一个):

-(void) doSomethingWithSuccessBlock:(void(^)(void))successBlock withFailureBlock:(void (^)(NSError *)) failureBlock

或者

-(BOOL) didDoSomethingWithFailureBlock:(void (^)(NSError *)) failureBlock

或者

-(void) doSomethingWithCallbackBlock:(void (^)(BOOL, NSError *)) callbackBlock

最佳答案

使用多个方 block 作为参数会扭曲你的思想,弯曲你的脊柱,并使敌人赢得 war 。 (套用乔治·卡林的话)

开个玩笑,只有 1 个 block 参数是一个很好的目标,但正如其他人指出的那样,Apple 有许多类的方法采用多个 block 。在设计使用多个 block 参数的 API 之前,请花一些时间考虑替代方案,并思考它对代码的可读性和可维护性有何影响。有没有更简单的方法来实现相同的目标?如果多个 block 是实现目标的最干净的方法,那么就使用它。

我认为您的同时采用成功 block 和失败 block 的方法示例非常合理。您可以将其重构为单个 block ,该 block 采用 BOOL 参数“成功”并询问 block 中的该参数来决定要做什么。 (CAAnimation 委托(delegate)方法 animationDidStop:finished: 使用这种方法。实际上,UIView 动画中的完成 block 也是如此,想想看。)

您必须决定这是否会使方法和传递给它的 block 变得更简单、更清晰还是更复杂。

关于ios - 将多个 block 参数传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23431276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com