Is Blocks 是用于 objective c 中的多个 return 值的便捷方法

Is Blocks is convinient way to use for multiple return values in objective c

在我的 iPhone - objective c 项目中,我必须 return 来自一个方法的多个值

我想到了使用 Blocks 来做到这一点

喜欢

  - (void)fetchValueForKey:(nonnull NSString*)key WithCompletionHandler:(void(^_Nonnull)( id _Nullable value, NSError* _Nullable error))completionHandler
    {
    }

我问这个问题是因为通常这种块参数用于异步回调,这仍然可以使用块来获取多个 return 值吗?请提前说明一下,thanx

不要掩饰你的意图!

如果某个东西被称为完成处理程序,那么查看代码的每个人(甚至是一周后代码的作者)都会假设一些(异步)回调。

在给出的示例中,我认为这可能是合适的:

-(id)fetchValueForKey:(NSString*)key error:(NSError **)error { ... }

并且会与我们使用的许多框架内联(添加您认为合适的非空装饰器)。

在其他情况下,您可以将它们打包到具有有意义键的字典中,即 @{@"name" : ..., @"adress" : ...}。这比返回完全缺乏语义信息的不同事物的数组要好得多。

如果您想要一种类型安全且非常干净的方式,请使用具有这些属性的专用 class。通常看起来矫枉过正的东西是以后阅读的乐趣,而且通常它表明设计可以大大改进,并且 class 成为您代码库中的好公民。