我有一个带有20个参数的方法,(NSString,float,....),我可以构造一个类型(例如Enumerated,typdef)来调用我的方法而不传递我的所有参数吗?
取代: - (void)myMethodeParam1:...:param2:....;
使用: - (void)myMethode:MyNewTypeParam;
坦克为你的答案
答案 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
...
}
如果您的参数一起是某个逻辑实体并且它们通常一起使用,您还可以创建一个包含它们作为实例变量的自定义类