我正在尝试声明一个具有多个输入和输出参数的方法。我对像这样的多个输入参数声明没有问题:
- (float)tCorrection:(float)t2 tCableBase:(float)t1 CableMaterial: (NSString*)CopperOrAl;
在本例中,我们有3个输入参数(不同类型)和一个浮点返回类型。
我的问题是如何声明一个有超过1个返回参数的函数。我尝试了不同的语法,但没有成功。
任何帮助都是非常感谢的。
发布于 2013-06-21 16:11:48
返回多个值的推荐方式是:
通常不应该使用按引用传递的方法,而是主要用于NSError**
。
发布于 2013-06-21 16:49:00
首先,你的方法名真的是次优的。而不是:
- (float)tCorrection:(float)t2 tCableBase:(float)t1 CableMaterial: (NSString*)CopperOrAl;
我建议这样做:
- (float)applyCorrection:(float)correction toCableBase:(float)cableBase withCableMaterial:(CableMaterial)material;
其中,您将CableMaterial
定义为枚举类型的材质。
接下来,为了回答您的问题,您可以按照duDE的建议使用按引用返回。
但是,不要,闻起来像是糟糕的设计。
相反,听起来您确实需要一个类,它的实例可以使用各种参数进行配置,然后进行查询以获得计算结果。这将产生一个更干净的应用程序设计。
我会想像一个拥有material
、base
、correction
等属性的Cable
类……然后是计算各种所需值的各种readonly
属性。
发布于 2013-06-21 13:47:02
通常,没有任何返回多个值的方法的语法,但是如果您有多个值,并且您想要返回它,那么可以创建用于返回多个值的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);
https://stackoverflow.com/questions/17236634
复制相似问题