来自NSString的Obj-C变量?

时间:2011-06-16 14:15:58

标签: iphone objective-c ios nsstring

  

可能重复:
  Get an ivar or property from a NSString
  Remove @“” from NSString or typecast NSString into variable name

让我说我有:

MyClass *myVar = [[MyClass alloc] init];

我有NSString *myString = @"myVar";

有没有办法根据我的字符串检索var的实例?

2 个答案:

答案 0 :(得分:3)

在运行时,标识符myVar表示什么都没有,它被内存中的地址替换。如果您希望能够按名称获取对象,则需要使用NSDictionary或可变字典,例如。

NSDictionary* map = [NSDictionary dictionaryWithObjectsAndKeys: 
                        [[[MyClass alloc] init] autorelease], @"myVar", nil];

然后访问如下:

[map objectForKey: @"myVar"];

答案 1 :(得分:0)

如果是实例变量,只需使用valueForKey:即可。如果它是一个局部变量,那你就不走运了。如果它是一个全球性的,你可以做到,但它是丑陋的,缓慢的并且乞求“为什么?!”的问题。


您必须提供有关您要执行的操作的更多信息。根据定义,局部变量仅在定义它的范围内有效。鉴于此,很难想象你需要以符号方式访问局部变量而没有更好/更清洁/更简单的方式。