有很多参数的方法

时间:2011-04-07 15:33:17

标签: iphone objective-c

我有一个带有20个参数的方法,(NSString,float,....),我可以构造一个类型(例如Enumerated,typdef)来调用我的方法而不传递我的所有参数吗?

取代: - (void)myMethodeParam1:...:param2:....;

使用: - (void)myMethode:MyNewTypeParam;

坦克为你的答案

1 个答案:

答案 0 :(得分:2)

您可以使用NSDictionary(NSMutableDictionary)。你需要将原始类型(如float)包装到obj-c对象(例如NSNumber)中。

E.g。你有10个名为param0,...,param9的NSString params然后你可以将它们放在NSDictionary中:

NSDictionary *paramDict = [NSDictionary dictionaryWithObjectsAndKeys:string0, @"param0", string1, @"param1", ..., string9, @"param9", nil];
[obj myMethod: paramDict];

或者如果你能以某种方式枚举你的变量,你可以使用NSMutableDictionary并在循环中将它们添加到它。

然后在您的方法中,您可以从字典中获取参数:

-(void)myMethode: (NSDictionary*)dict{
    NSString *string0 = [dict objectForKey:@"param0];
    //Do something with it
    ...
}

如果您的参数一起是某个逻辑实体并且它们通常一起使用,您还可以创建一个包含它们作为实例变量的自定义类