2013-06-21 30 views
0

我想声明一个具有多个输入和输出参数的方法。 我没有问题具有多个输入参数的声明这样的:如何声明具有多个输入参数和输出参数的方法(函数)

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

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

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

任何帮助表示赞赏。

+0

你需要返回什么值? –

+0

为什么不使用'NSDictionary'或'NSMutableArray'? –

+0

我同意lxt,你需要的是一本字典 – Garrett

回答

0

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

  • 包起来,并返回一个struct
  • 把它包起来并返回一个类
  • 返回一个字典/阵列

使用通按引用的方式通常不应当被使用并主要 用于NSError**

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; 
} 

和GOT值从返回数组

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

NSLog(@"%@", returnArray); 
+2

我只会这样做,如果返回参数的数量或类型在编译时是未知的。您会错过编译时类型检查和Objective-C的显式样式和语法。有关首选方法,请参阅duDE的答案。 –

+0

事实上,这种方法相当容易出错,而且会失去类型安全性,命名参数,清晰度等等。 –

1

首先,您的方法名称是非常不理想的。相反的:你在哪里定义CableMaterial是一个枚举类型的材料

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

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

我建议类似。

接下来,回答你的问题,你能使用返回被引用作为花花公子建议。

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

相反,它听起来像是你需要一个类,其实例可以配置各种参数,然后查询获得计算结果。这将产生更清洁的应用程序设计。

我会想象有点像Cable类,它具有像materialbasecorrection性能等......然后各种readonly性质计算各种需要的值。

+0

感谢您的评论。它向我展示了另一种方法。 – user1544073

相关问题