Iphone 在objective-c中动态创建变量名

Iphone 在objective-c中动态创建变量名,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我在这里有点麻烦… 我将字符串传递给函数,在该函数中,我需要创建一个数组,其名称为字符串的值。 比如说:-(void)函数:(NSString*)arrayName//让arrayName=@“foo” 在这个函数中,我需要创建一个名为“foo”的数组,即传递参数的值。 有人能帮忙吗? 提前感谢;) 这在Objective-C中是不可能的,但您可以使用例如将字符串映射到数组的字典 例如,假设如下属性: @property (readonly, retain) NSMutableDictionar

我在这里有点麻烦…
我将字符串传递给函数,在该函数中,我需要创建一个数组,其名称为字符串的值。
比如说:
-(void)函数:(NSString*)arrayName//让arrayName=@“foo”
在这个函数中,我需要创建一个名为“foo”的数组,即传递参数的值。
有人能帮忙吗?

提前感谢;)

这在Objective-C中是不可能的,但您可以使用例如将字符串映射到数组的字典

例如,假设如下属性:

@property (readonly, retain) NSMutableDictionary *arrays;
。。。可以按名称存储阵列:

- (void)function:(NSString *)arrayName {
    NSArray *array = [NSArray arrayWithObjects:@"foo", @"bar", nil];
    [self.arrays setObject:array forKey:arrayName];
}
。。。然后像这样访问它:

NSArray *array = [self.arrays objectForKey:arrayName];

这在Objective-C中是不可能的,但您可以使用例如将字符串映射到数组的字典

例如,假设如下属性:

@property (readonly, retain) NSMutableDictionary *arrays;
。。。可以按名称存储阵列:

- (void)function:(NSString *)arrayName {
    NSArray *array = [NSArray arrayWithObjects:@"foo", @"bar", nil];
    [self.arrays setObject:array forKey:arrayName];
}
。。。然后像这样访问它:

NSArray *array = [self.arrays objectForKey:arrayName];

数组没有名称。变量有名称,但变量是其作用域的局部变量,因此一旦您离开该方法的作用域,使用名为“foo”的变量是没有意义的;你可以随意命名这个变量,它会很好的工作。例:

- (void) function:(id)whatever {
  NSArray * myVariable = [NSArray arrayWithStuff....];
  //use myVariable
}

你到底想做什么?

数组没有名称。变量有名称,但变量是其作用域的局部变量,因此一旦您离开该方法的作用域,使用名为“foo”的变量是没有意义的;你可以随意命名这个变量,它会很好的工作。例:

- (void) function:(id)whatever {
  NSArray * myVariable = [NSArray arrayWithStuff....];
  //use myVariable
}

你到底想做什么?

C是一种编译语言,其中任何源代码名(用于变量、函数等)在运行时都不可用(除了可能可选的调试,-g)。Objective C运行时增加了按名称查找Obj C方法和类的功能,但不能按对象或任何C内容查找。因此,除非您构建自己的迷你语言解释器结构,以便按名称进行引用,否则您就不走运了。有很多方法可以做到这一点,但简单语言通常会构建某种类型的变量表,比如字典、数组或对象(结构、元组等)的链表,其中包含字符串名、对象指针(可能还有类型、大小等)。

C是一种编译语言,其中包含任何源代码名(用于变量、函数等)在运行时不可用(除了可能可选的调试,-g)。Objective C运行时增加了按名称查找Obj C方法和类的功能,但不能按对象或任何C内容查找。因此,除非您构建自己的迷你语言解释器结构,以便按名称进行引用,否则您就不走运了。有很多方法可以做到这一点,但简单语言通常会构建某种类型的变量表,比如字典、数组或对象(结构、元组等)的链表,其中包含字符串名称、对象指针(可能还有类型、大小等).

为什么需要NSArray变量有一个特定的名称?为什么需要NSArray变量有一个特定的名称?嘿,谢谢你的意见…:)实际上,函数本质上是递归的;因此,每次我遍历它时,我都希望能够创建一个新数组,而不会丢失前一个数组…@Bangdel如果该方法是递归的,那么该对象仍将存在于创建它的帧/范围中。一旦退出递归调用,对象仍将存在。嘿,谢谢你的意见…:)实际上,函数本质上是递归的;因此,每次我遍历它时,我都希望能够创建一个新数组,而不会丢失前一个数组…@Bangdel如果该方法是递归的,那么该对象仍将存在于创建它的帧/范围中。一旦退出递归调用,对象仍将存在。