在Objective-C中的运行时创建变量

时间:2010-01-30 03:46:09

标签: iphone objective-c variables

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

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

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

}

无论如何要完成这项任务吗?我正在使用iPhone SDK 3.1。感谢。

4 个答案:

答案 0 :(得分:1)

不完全是你可以使用NSMutableDictionary在运行时添加键/值对,其中键是字符串数组中的名称。请参阅http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/Reference/Reference.html

答案 1 :(得分:1)

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

将新的实例变量添加到类中。

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

答案 2 :(得分:1)

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

我认为真正的问题是“为什么你需要这样做?你想要完成什么?”

答案 3 :(得分:0)

如果变量在运行时才存在,那么可以使用它们吗?