2010-01-30 59 views
2

我目前有一个循环遍历NSString对象的NSArray。我想要在循环的每次迭代中创建一个NSString变量,使用当前评估的NSString对象的字符串值(来自NSArray)作为变量的名称。这可能是通过示例最好的解释:在运行期间在Objective-C中创建变量

for (i = 0; i < [arrayOfStrings count]; i++) { 

    // NSString *<name of variable is [arrayOfStrings objectAtIndex:i]> = [[NSString alloc] init]; 

} 

有没有办法完成此任务?我正在使用iPhone SDK 3.1。谢谢。

+1

没有。但你为什么要这样做? – echo 2010-01-30 03:48:24

+0

感谢大家的回应。这个场景的用例是未知的(谷歌)用户提出的,我需要根据需要创建一个类。不过,我想了一会儿,这是一个相当糟糕的设计,并重新调整应用程序以不再需要该功能。无论如何感谢您的所有建议! – Skoota 2010-01-31 05:55:29

回答

0

如果不存在变量,直到运行时那么什么会利用它们?

+0

我认为这有几个有用的情况。我想到的一个直接案例是需要根据需要创建一些类并根据所需的字段和方法实例化的情况。 但是,可能这里要求的人有不同的用例 – user200654 2010-01-30 20:13:56

1

您可能需要看一看的Objective-C运行库支持。有许多函数允许您在运行时添加变量,方法或更改方法实现。例如,在您的情况下,class_addIvar函数可能适用于您:

向类中添加一个新的实例变量。

BOOL class_addIvar(Class cls, const char *name, size_t size, uint8_t alignment, const char *types) 
1

您要求的内容没有意义。运行时不存在变量名称。它们被编译为偏移量,并且变量的名称会丢失(如果我们正在讨论方法局部变量,运行时将保留实例变量的名称)。

我认为真正的问题是“你为什么要这么做?你到底想实现什么?”