如何设置全局变量取决于参数?

时间:2014-02-09 19:22:18

标签: ios

我有一些NSString Globals变量。

我可以这样设置:

[[Globals sharedInstance] setColor1:@"red"];
[[Globals sharedInstance] setColor2:@"orange"];

但我在一个函数中,参数代表数字1,2,3等。 我怎么能这样做?

[[Globals sharedInstance] setColorMYPARAMETER:@"orange"];

2 个答案:

答案 0 :(得分:1)

您可以使用NSSelectorFromString

动态地根据方法名称构建选择器
int colorNum = ... ;
NSString * colorSelStr = [NSString stringWithFormat:@"setColor%d:", colorNum];
[[Globals sharedInstance] performSelector:NSSelectorFromString(colorSelStr) withObject:@"orange"];

这将创建一个看起来像您想要的方法名称的字符串,然后使用来自该字符串的SEL向共享全局对象请求“performSelector”,并将颜色字符串作为参数。


但是,这可能表明您可以更好地设计原始代码。为什么你的全局数为0-n?为什么不为所有全局颜色保留NSArray,然后只通过索引访问它?

答案 1 :(得分:0)

SEL mySel =NSSelectorFromString([NSString stringWithFormat:@"setColor%d:",num]);
[[Globals sharedInstance] performSelector:mySel withObject:@"color"];