来自NSString的Objective-C标识符

evd*_*100 1 objective-c nsstring nsarray

我想将NSString传递给一个方法,并将该特定的NSString名称作为新的NSSMutableArray.混乱?以编程方式看起来像这样:

+ (void)newMutableArrayWithName:(NSString*)theArrayName
{
     NSLog(@"Creating an array that is named: %@",theArrayName);
     NSMutableArray* theArrayName = [[NSMutableArray alloc] init];
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,"theArrayName"与传递给该方法的参数无关.有什么方法可以实现吗?

Mik*_*Hay 7

变量名称由编译器使用,并在编译时设置,而不是在运行时设置.

如果您需要能够将标签与数组相关联,我建议您使用NSDictionary来执行此类操作

NSString *theArrayName = @"My Cool Array";
NSMutableArray *theArray = [NSMutableArray array];
NSDictionary *theDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
                                      theArray, theArrayName, nil];
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以在字典中有多个"命名"数组,并且可以通过您提供的名称访问它们

[theDictionary objectForKey:@"My Cool Array"];
Run Code Online (Sandbox Code Playgroud)