在我的iPhone - Objective c项目中,我必须从方法
返回多个值我想过使用Blocks来做到这一点
喜欢
- (void)fetchValueForKey:(nonnull NSString*)key WithCompletionHandler:(void(^_Nonnull)( id _Nullable value, NSError* _Nullable error))completionHandler
{
}
我问这个问题,因为通常这些块参数用于异步回调,这仍然可以使用块来获取多个返回值吗?请提前了解一下光线,
答案 0 :(得分:1)
别掩饰你的意图!
如果某个东西被称为完成处理程序,那么每个查看代码的人(甚至是一周后代码的作者)都会假定某些(异步)回调。
在给定的例子中,我认为这可能是合适的:
-(id)fetchValueForKey:(NSString*)key error:(NSError **)error { ... }
并将与我们使用的许多框架内联(根据需要添加非空装饰器)。
在其他情况下,您可以将它们打包在带有意义键的词典中,即@{@"name" : ..., @"adress" : ...}
。这比返回一组完全缺乏语义信息的不同内容要好得多。
如果您想要一种类型安全且非常干净的方式,请使用具有这些属性的专用类。通常看起来有点过头的事情很高兴以后阅读,并且经常表明设计可以大大改进,并且该课程在您的代码库中成为一个好公民。