我正在尝试声明一个具有多个输入和输出参数的方法。我对这样的多个输入参数声明没有任何问题:
- (float)tCorrection:(float)t2 tCableBase:(float)t1 CableMaterial: (NSString*)CopperOrAl;
在这种情况下,我们有 3 个输入参数(不同类型)和一个浮点返回类型。
我的问题是如何声明一个返回参数超过 1 个的函数。我尝试了不同的语法,但没有运气。
任何帮助表示赞赏。
我正在尝试声明一个具有多个输入和输出参数的方法。我对这样的多个输入参数声明没有任何问题:
- (float)tCorrection:(float)t2 tCableBase:(float)t1 CableMaterial: (NSString*)CopperOrAl;
在这种情况下,我们有 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
类,它具有诸如material
、base
、correction
等属性,然后readonly
是计算各种所需值的各种属性。
通常没有返回多个值的方法的任何语法,但是如果您有多个值并且您想要返回它,那么创建NSMutableArray
或NSMutableDictionary
返回多个值很有用。
像这样,
- (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);
返回多个值的推荐方式是:
使用传递引用的方法通常不应该被使用,并且主要用于NSError**
.