0

我正在尝试声明一个具有多个输入和输出参数的方法。我对这样的多个输入参数声明没有任何问题:

     - (float)tCorrection:(float)t2 tCableBase:(float)t1 CableMaterial: (NSString*)CopperOrAl;

在这种情况下,我们有 3 个输入参数(不同类型)和一个浮点返回类型。

我的问题是如何声明一个返回参数超过 1 个的函数。我尝试了不同的语法,但没有运气。

任何帮助表示赞赏。

4

3 回答 3

1

首先,您的方法名称确实不是最理想的。代替:

     - (float)tCorrection:(float)t2 tCableBase:(float)t1 CableMaterial: (NSString*)CopperOrAl;

我会建议类似:

 - (float)applyCorrection:(float)correction toCableBase:(float)cableBase withCableMaterial:(CableMaterial)material;

您定义CableMaterial为枚举类型的材料的位置。

接下来,要回答您的问题,您可以按照duDE的建议使用按引用返回。

但是,不要。闻起来像糟糕的设计。

相反,听起来您确实需要一个类,其实例可以配置各种参数,然后查询以获取计算结果。这将产生一个更干净的应用程序设计。

我会想象一个Cable类,它具有诸如materialbasecorrection等属性,然后readonly是计算各种所需值的各种属性。

于 2013-06-21T16:49:00.407 回答
0

通常没有返回多个值的方法的任何语法,但是如果您有多个值并且您想要返回它,那么创建NSMutableArrayNSMutableDictionary返回多个值很有用。

像这样,

- (NSMutableArray *)tCorrection:(float)t2 tCableBase:(float)t1 CableMaterial: (NSString*)CopperOrAl;
{
     NSMutableArray *temArray = [[NSMutableArray alloc] init];
     [temArray addObject:[NSString stringWithFormat:@"%f", t2]];
     [temArray addObject:[NSString stringWithFormat:@"%f", t1]];
     [temArray addObject:[NSString stringWithFormat:@"%@", CopperOrAl]];

   return temArray;
}

并从返回数组中获取值

NSMutableArray *returnArray = [self tCorrection:2.5 tCableBase:23.5 CableMaterial:@"MyString"];

NSLog(@"%@", returnArray);
于 2013-06-21T13:47:02.390 回答
0

返回多个值的推荐方式是:

  • 把它包起来并返回一个结构
  • 把它包起来并返回一个类
  • 返回一个字典/数组

使用传递引用的方法通常不应该被使用,并且主要用于NSError**.

于 2013-06-21T16:11:47.583 回答