Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在Objective-C中的运行时创建变量_Iphone_Objective C_Variables - Fatal编程技术网

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

Iphone 在Objective-C中的运行时创建变量,iphone,objective-c,variables,Iphone,Objective C,Variables,我目前有一个循环,它遍历NSString对象的NSArray。我希望在循环的每次迭代中创建一个NSString变量,使用当前评估的NSString对象的字符串值(来自NSArray)作为变量名称。这可能最好通过以下示例来解释: for (i = 0; i < [arrayOfStrings count]; i++) { // NSString *<name of variable is [arrayOfStrings objectAtIndex:i]> = [[NSS

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

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

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

}
for(i=0;i<[ArrayOfString计数];i++){
//NSString*=[[NSString alloc]init];
}

有没有办法完成这项任务?我正在使用iphonesdk3.1。谢谢。

不完全正确,但您可以使用NSMutableDictionary在运行时添加键/值对,其中键是字符串数组中的名称。请参阅。

如果变量在运行时之前不存在,那么如何利用它们?

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

将新实例变量添加到类中

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

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


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

不。但是你为什么要这样做?谢谢大家的回答。这个场景的用例是未知(google)用户建议的,我需要在哪里按需创建一个类。然而,我认为过了一段时间,这是一个相当糟糕的设计,并对应用程序进行了重组,使其不再需要该功能。无论如何,谢谢你的建议!我认为这方面有几个有用的例子。我想到的一个直接案例是,需要根据需要创建一些类,并根据所需的字段和方法进行实例化。但这里询问的人可能有不同的用例